2012-07-31 11 views
26

Ho una query MySQL (con MySQL 5.0.88), che sto cercando di velocizzare. La tabella sottostante ha più indici e per la query in questione viene utilizzato l'indice errato (i_active - 16.000 righe, rispetto a i_iln - 7 righe).Come suggerire l'indice da utilizzare in una query di selezione MySQL?

Non ho molta esperienza con MySQL ma ho letto che c'è un suggerimento use index, che può forzare mySQL a usare un certo indice. Sto provando in questo modo:

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

ma questo produce un errore MySQL.

Domanda:
Qualcuno può dirmi che cosa sto facendo male? (. Tranne in esecuzione 5.0.88, che non posso cambiare)

+2

Per quello che vale, USE INDEX non forza l'indice con nome da utilizzare. Significa semplicemente "non considerare l'utilizzo di alcun * altro * indice". L'indice che tu chiami potrebbe essere irrilevante per la query, nel qual caso MySQL non lo userà ancora. –

risposta

34

vi siete persi la FROM table

SQL corretta dovrebbe essere:

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

+7

ah ... 2100 ms a 0 ms. Freddo! – frequent

0

Seleziona Coloumn1, Coloumn2, Coloumn .... FROMTABLE_NAMEUSO INDICE (index_name) DOVE Coloumn = "condizione";

se si dispone di indice corretto, non è necessario utilizzare index(). la tua query automic seleziona l'indice corretto.Se la tua query rallenta dopo aver usato index thn ricontrolla il tuo indice, qualcosa di sbagliato nell'indice. grazie in anticipo. Inserisci codice qui

+0

La tua risposta trarrebbe vantaggio da alcune modifiche alla leggibilità, dalla formattazione e dall'eliminazione di frammenti di testo che sembrano segnaposto di modelli non utilizzati. – Yunnosch

+0

Benvenuti in SO. Leggi questa [come risposta] (http://stackoverflow.com/help/how-to-answer) e segui le linee guida per fornire una risposta di qualità. – thewaywewere

Problemi correlati