gueschla.com/2007/06/12/utilisation-des-indexes-mysql-lors-du-re…

post 16 of 32 · 12 June 2007 · written in French

MySQL ignores indexes when you wrap a column in a function

Utilisation des indexes MySQL lors du recours à une fonction dans la condition where

The quote of the day, from a MySQL performance forum: MySQL won't use an index on a column you pass through a function in the WHERE clause. So WHERE DATE(date_insert) = '2007-05-01' scans the table, while a BETWEEN range on the raw column uses the index and runs much faster.

utilisation-des-indexes-mysql-lors-du-recours-a-.fr12 June 2007

Voici la phrase du jour ;-)

MySQL won’t/can’t use indexes where you apply a function to a column in a where condition.

Par exemple, si vous faites comme ceci, les indexes ne seront pas utilisés.

SELECT * FROM ma_table WHERE DATE(date_insert) = '2007-05-01' ;

Mieux vaut contourner le problème en faisant cela, même si il y a peut être plus élégant comme solution.

SELECT * FROM ma_table WHERE date_insert BETWEEN '2007-05-01' AND '2007-05-02' ;

Dans ce dernier cas, les indexes seront utilisés, et la requête sera beaucoup plus rapide !

Source : Forum de MySQL Performance

Original French text from Internet Archive captures of gueschla.com. Light typo fixes only. Links to outside sites are shown as plain text, because most of those 2007 addresses no longer lead where they did.