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

Seleccionar campos con consulta IN

Estas en el tema de Seleccionar campos con consulta IN en el foro de Mysql en Foros del Web. Buenos dias, solo tengo una duda, me gustaria saber cual seria la forma "ideal" y mas rapida de hacer una consulta como la siguiente: @import ...
  #1 (permalink)  
Antiguo 08/05/2012, 14:54
Avatar de DarkskullDA  
Fecha de Ingreso: julio-2006
Mensajes: 698
Antigüedad: 17 años, 9 meses
Puntos: 13
Información Seleccionar campos con consulta IN

Buenos dias, solo tengo una duda, me gustaria saber cual seria la forma "ideal" y mas rapida de hacer una consulta como la siguiente:

Código MySQL:
Ver original
  1. SELECT campo1 FROM tabla1 WHERE campo2 IN(valores) LIMIT 20

Como ven la idea seria seleccionar solo 20 registros, donde el campo2 concuerdo con los "valores"


*1: Cabe mencionar que la tabla1 talvez tenga 500 mil registros.... o más
*2: valores seria una cadena separada por comas... pero posiblemente con mas de 1000 valores distintos..
*3: No todos los valores van a estar en la tabla... talvez solo haya 1 que exista.. o talvez 50... o mucho mas... pero es indefinido..


Entonces, esto seria correcto? o se podria optimizar?

Saludos y suerte!
__________________
Curso Desarrollo De Aplicaciones IFrame Para Facebook Conoce la Graph Api, Javascript/PHP SDK, Dialogos, Pestañas, entre otros.
  #2 (permalink)  
Antiguo 09/05/2012, 07:08
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Seleccionar campos con consulta IN

Si la lista de los 1000 posibles valores la tienes en otra tabla puedes hacer esto

otraTabla
valor
...

Código MySQL:
Ver original
  1. SELECT campo1
  2. FROM tabla1
  3. WHERE campo2 IN (SELECT valor
  4.                 FROM otraTabla)
  5. LIMIT 20;

que seria prácticamente lo mismo pero sin tener que construir el string.


o

Código MySQL:
Ver original
  1. SELECT campo1
  2. FROM tabla1 INNER JOIN otraTabla
  3.         ON tabla1.campo2=otraTabla.valor
  4. LIMIT 20;

Esa otraTabla puede tener un indice sobre el campo valor que seguramente, junto con el que puedas tener sobre campo2, ayudará al motor a hacer la selección.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Etiquetas: campos, registros, select, tabla
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 08:16.