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

Mejorar consulta

Estas en el tema de Mejorar consulta en el foro de Mysql en Foros del Web. Hola, No se que me ocurre, pero llevo haciendo tantas consultas estos meses, que se me ha sobrecargado la azotea y no se ni que ...
  #1 (permalink)  
Antiguo 01/12/2011, 05:42
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años, 7 meses
Puntos: 19
Mejorar consulta

Hola,

No se que me ocurre, pero llevo haciendo tantas consultas estos meses, que se me ha sobrecargado la azotea y no se ni que hago. Estoy intentando hacer una busqueda en mi base de datos, pero no tengo ninguna confianza de estar haciendola bien. Mirar:

Código PHP:
SELECT id,(SELECT name FROM types WHERE w ids.id and r='3' limit 1) as as_content FROM ids where type='1' and state='public' and (SELECT name FROM types WHERE w ids.id and r='3' limit 1LIKE '%texto%' limit 10 
¿Se puede reducir?, es que me parece que la forma de usar el like en una consulta en el where de la consulta principal es una forma mala, ya que estoy pidiendo el valor dos veces, pues ese contenido tambien esta en el alias "as_content".

Sobre los problemas que alguien puede pensar sobre el nombre de las tablas, columnas y demas no tengo problemas. Por si las moscas.

Existe alguna forma de solo llamar una vez a tabla "types"?
  #2 (permalink)  
Antiguo 01/12/2011, 07:49
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Mejorar consulta

Estás complicando demasiado y leyendo dos veces la misma tabla, con el agregado que lo haces por cada registro devuelto por la tercera tabla.
¿Nunca has usado JOIN o INNER JOIN? Sale en cualquier manual de SQL basico; trata de leer sobre el porque te ayudará y mucho.

Código MySQL:
Ver original
  1.     id,
  2.     `name` content
  3. FROM ids I INNER JOIN `TYPES` T ON I.id = T.w
  4.     `type` = '1' AND
  5.     `state` = 'public' AND
  6.     T.r='3' AND
  7.     T.`name` LIKE '%texto%'
  8. GROUP BY id, `name`

Tip: Trata de no usar términos en inglés para los nombres. Son propensos a chocar con las palabras reservadas del DBMS y generar errores de sintaxis indetectables. type, status y cosas así son palabras reservadas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 01/12/2011, 08:58
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 17 años, 7 meses
Puntos: 19
Respuesta: Mejorar consulta

Muchas gracias por tu query... lo voy a estudiar. Y sobre las palabras clave tienes razon... :P

Etiquetas: mejorar, 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 12:50.