2012-07-31 8 views
26

Tengo una consulta MySQL (ejecutando MySQL 5.0.88), que estoy tratando de acelerar. La tabla subyacente tiene múltiples índices y para la consulta en cuestión, se utiliza el índice incorrecto (i_active - 16,000 filas, frente a i_iln - 7 filas).¿Cómo insinuar el índice para usar en una consulta de selección de MySQL?

No tengo mucha experiencia con MySQL pero leo que hay una sugerencia de use index, que puede obligar a mySQL a usar cierto índice. Lo intento así:

SELECT art.firma USE INDEX (i_iln) 
... 

pero esto produce un error de MySQL.

Pregunta:
¿Alguien me puede decir lo que estoy haciendo mal? (. Excepto corriendo 5.0.88, que no puedo cambiar)

+2

Por lo que vale, USE INDEX no fuerza el uso del índice nombrado. Simplemente significa "no considerar el uso de ningún * otro * índice". El índice que usted designe puede ser irrelevante para la consulta, en cuyo caso MySQL aún no lo usará. –

Respuesta

34

que se perdió el FROM table

SQL correcta debería ser:

SELECT art.firma FROM your_table USE INDEX (i_iln) WHERE ....

+7

ah ... 2100ms a 0ms. ¡Guay! – frequent

0

Seleccione Coloumn1, Coloumn2, Coloumn .... DESDETABLE_NAMEUSO ÍNDICE (index_name) DONDE de Coloumn = "condición";

si tiene el índice correcto, entonces no necesita usar el índice(). su consulta automic selecciona el índice correcto. Si su consulta es lenta luego de usar el índice, vuelva a verificar su índice, algo incorrecto en el índice. gracias de antemano. Ingrese el código aquí

+0

Su respuesta se beneficiaría de una edición de legibilidad, algunos formateos y la eliminación de fragmentos de textos que parecen marcadores de posición de la plantilla no utilizados. – Yunnosch

+0

Bienvenido a SO. Lea este [cómo-responder] (http://stackoverflow.com/help/how-to-answer) y siga las instrucciones allí para proporcionar una respuesta de calidad. – thewaywewere

Cuestiones relacionadas