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

alternativa a where, para optimizar query

Estas en el tema de alternativa a where, para optimizar query en el foro de Mysql en Foros del Web. Hola, teniendo la query: Código PHP: SELECT SQL_CALC_FOUND_ROWS  *  FROM tabla1  AS  t1 WHERE MATCH  (  t1 . campoText  )  AGAINST  (  'greeting*'  IN BOOLEAN MODE  )  Habria alguna otra ...
  #1 (permalink)  
Antiguo 29/11/2010, 15:11
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 15 años, 10 meses
Puntos: 35
alternativa a where, para optimizar query

Hola, teniendo la query:
Código PHP:
SELECT SQL_CALC_FOUND_ROWS FROM tabla1 AS t1
WHERE MATCH 
t1.campoText AGAINST 'greeting*' IN BOOLEAN MODE 
Habria alguna otra opcion mas rapida, algo asi como un JOIN, Porque sé que el where me filtra los registros que me trae el select , el cual me trae tooooodos los de la tabla.
Los campos estan indexados, etc, etc.
El SQL_CALC_FOUND_ROWS lo usa para un paginado.
Gracias!
__________________
I am Doyle please insert code.
  #2 (permalink)  
Antiguo 29/11/2010, 15:49
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: alternativa a where, para optimizar query

Saludos

Podrias manejar LIMIT en vez de SQL_CALC_FOUND_ROWS has probado?
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #3 (permalink)  
Antiguo 30/11/2010, 06:41
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 15 años, 10 meses
Puntos: 35
Respuesta: alternativa a where, para optimizar query

Si, uso el limit (habia olvidado postearlo) pero si lo uso,
Código PHP:
SELECT SQL_CALC_FOUND_ROWS FROM tabla1 AS t1
WHERE MATCH 
t1.campoText AGAINST 'greeting*' IN BOOLEAN MODE )
limit 1,100
Pero a su vez tambien debo usar SQL_CALC_FOUND_ROWS para hacer correctamente un paginado. El campo campoText es del tipo Text, tiene indice fulltext.
__________________
I am Doyle please insert code.
  #4 (permalink)  
Antiguo 30/11/2010, 07:02
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: alternativa a where, para optimizar query

El MATCH .. AGAINST.. es de por sí un modo de búsqueda de baja eficiencia porque el sentido es ubicar algo dentro de un contexto muy grande. Optimizarlo tiene muchos más problemas que optimizar otro tipo de consultas.
En todo caso lo que debes hacer es determinar que condiciones adicionales te pueden permitir eliminar opciones, es decir aumentar la selectividad de la consulta.
No es lo mismo ponerlo así:
Código MySQL:
Ver original
  1. FROM tabla1 AS t1
  2. WHERE MATCH ( t1.campoText ) AGAINST ( 'greeting*' IN BOOLEAN MODE ) ;

que así:

Código MySQL:
Ver original
  1. FROM tabla1 t1
  2. WHERE campoX = 12 AND MATCH ( t1.campoText ) AGAINST ( 'greeting*' IN BOOLEAN MODE ) ;
o incluso que así:
Código MySQL:
Ver original
  1. FROM (SELECT * FROM tabla1 WHERE campoX = 12 ) t1
  2. WHERE MATCH ( t1.campoText ) AGAINST ( 'greeting*' IN BOOLEAN MODE ) ;
La performance de la consulta puede cambiar en cuanto agregas condiciones, o realizas algún tipo de filtrado adicional, sea o no cruzando esa tabla con otra.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: query
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 22:24.