MySQL作為開源的關系型數據庫管理系統,其性能優異且穩定可靠,被廣泛應用于各類企業級應用和網站開發中。在使用mysql時,我們常常需要優化查詢語句,以提高數據庫查詢速度和效率。然而,在實際開發過程中,我們經常會遇到mysql不走索引的情況,這會導致查詢效率低下,從而導致應用程序變得非常緩慢。在下面,我們就來看一下,在哪些函數下,mysql會不走索引。
在以下情況下,MySQL不走索引: 1.函數調用查詢 比如,這個查詢不會使用索引: SELECT * FROM user WHERE year(regtime) = 2018; 而這個查詢會使用索引: SELECT * FROM user WHERE regtime >= '2018-01-01' and regtime<= '2018-12-31'; 2.表達式運算查詢 比如,這個查詢不會使用索引: SELECT * FROM user WHERE id%10=8; 而這個查詢會使用索引: SELECT * FROM user WHERE id>=8 AND (id-8)%10=0; 3.列函數查詢 比如,這個查詢不會使用索引: SELECT * FROM user WHERE left(name,3)='abc'; 而這個查詢會使用索引: SELECT * FROM user WHERE name LIKE 'abc%'; 4.操作符限制索引 比如,這個查詢不會使用索引: SELECT * FROM user WHERE name LIKE '%abc%'; 而這個查詢會使用索引: SELECT * FROM user WHERE name='abc';
總之,在使用mysql進行查詢時,如果能夠避免在不支持索引的函數下進行查詢,就可以提高數據庫的查詢效率和速度。因此,在實際開發中,我們應該盡量避免在不支持索引的函數下進行查詢,以優化mysql數據庫的性能。
下一篇mysql中集合