Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

JOINs, WHEREs y convencionalismos

Estas en el tema de JOINs, WHEREs y convencionalismos en el foro de Mysql en Foros del Web. Hola, Mi primera duda es entorno a los JOINs y el WHERE. Tengo varias consultas multitabla en un programilla. Consultas de dos, tres, cuatro, etc. ...
  #1 (permalink)  
Antiguo 22/03/2007, 15:22
 
Fecha de Ingreso: enero-2004
Mensajes: 63
Antigüedad: 20 años, 3 meses
Puntos: 0
JOINs, WHEREs y convencionalismos

Hola,

Mi primera duda es entorno a los JOINs y el WHERE. Tengo varias consultas multitabla en un programilla. Consultas de dos, tres, cuatro, etc. tablas. Yéndome a lo más simple (dos tablas) tendría una tabla con datos "comunes" sobre algo y otra con datos por idioma sobre ese algo. Os pondré un ejemplo inventado para que me entendáis:

Tabla productos
id_producto
precio

Tabla descripcion_productos
id_producto
id_idioma
nombre

Digamos que tenemos dos idiomas. Entonces por cada registro de la tabla productos tendremos dos en la tabla descripcion_productos. Sé que lo mejor es usar un INNER JOIN con su cláusula USING u ON para relacionar el campo "id_producto" en lugar de relacionarlas en el WHERE. Pero tengo una duda más: ¿Cómo sería mejor?:

1. SELECT {loquesea} FROM productos AS a
INNER JOIN descripcion_productos AS b USING(id_producto)
WHERE b.id_idioma = {IdDeIdioma} && {RestoDeCondiciones}

2. SELECT {loquesea} FROM productos AS a
INNER JOIN descripcion_productos AS b ON(b.id_producto = a.id_producto && b.id_idioma = {IdDeIdioma})
WHERE {RestoDeCondiciones}

Es decir, ¿sería mejor meter lo del idioma en el WHERE o en el JOIN? Tanto desde el punto de vista del rendimiento (más que nada) como de los convencionalismos. Hay que tener en cuenta que la tabla descripcion_productos va unida a la de productos y solo nos interesa obtener la fila correspondiente al ID de producto e idioma consultados pero todas las demás restricciones y condiciones (WHERE) se haría sobre la tabla productos.

Mis otras dudas son sobre convencionalismos (es decir, intentar buscar el "estandar") nada más. ¿Qué es más común o "mejor visto" desde ese punto de vista? ¿Usar los símbolos && y || o utilizar las palabras AND y OR?

Y... Sobre los nombres de las tablas y campos... ¿Sería del tipo NombreTabla y NombreCampo o nombre_tabla y nombre_campo? Me imagino que lo segundo pero quiero confirmarlo.

Gracias de antemano y perdón por el ladrillo.
  #2 (permalink)  
Antiguo 23/03/2007, 13:08
 
Fecha de Ingreso: enero-2004
Mensajes: 63
Antigüedad: 20 años, 3 meses
Puntos: 0
Re: JOINs, WHEREs y convencionalismos

¿Nadie sabe qué es más correcto? ¿Vosotros cómo lo haríais/hacéis?

Un saludo
  #3 (permalink)  
Antiguo 24/03/2007, 13:58
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Re: JOINs, WHEREs y convencionalismos

Holas,

En lo personal prefiero usar el WHERE, pues hasta el momento es mas rapido eficiente para mi, no veo por que usar el INNER (eso te hace un producto cartesiano y agarrarias tremendas tablas para hacer eso, , por eso el WHERE deja todo eso y solo va al campo clave). ahora con eso del colocar en el select el nombre de la tabla y luego el campo, es mejor colocar la tabla y el nombre pues es mas rapido para el motor ubicarlo, y aun mas si son con tablas INNODB.

Seria lo mejor algo como esto:

SELECT {loquesea} FROM productos, descripcion_productos,tabla_idioma WHERE productos.id_producto = descripcion_productos.id_producto AND descripcion_productos.id_idioma = tabla_idioma.id_idioma AND tabla_idioma.nombre_idioma='EL_IDIOMA'


Saludos
Gildus
__________________
.: Gildus :.
  #4 (permalink)  
Antiguo 25/03/2007, 16:31
 
Fecha de Ingreso: enero-2004
Mensajes: 63
Antigüedad: 20 años, 3 meses
Puntos: 0
Re: JOINs, WHEREs y convencionalismos

¿No es justo al contrario? Yo soy autodidacta pero tengo entendido que es más eficiente hacer consultas multitabla usando inner join en lugar de cláusulas en el where. El producto cartesiano completo se realiza cuando lo haces con el where.

No sé si estaré equivocado pero juraría que es así.

Un saludo
  #5 (permalink)  
Antiguo 30/03/2007, 09:33
 
Fecha de Ingreso: enero-2004
Mensajes: 63
Antigüedad: 20 años, 3 meses
Puntos: 0
Re: JOINs, WHEREs y convencionalismos

Subo de nuevo el tema para ver si alguien conoce la respuesta a alguna de las preguntas que planteo en el primer post.

Un saludete!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:37.