Ver Mensaje Individual
  #4 (permalink)  
Antiguo 30/11/2010, 07:02
Avatar de gnzsoloyo
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, 5 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)