MySQL作為開源的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),其性能優(yōu)異且穩(wěn)定可靠,被廣泛應(yīng)用于各類企業(yè)級應(yīng)用和網(wǎng)站開發(fā)中。在使用mysql時,我們常常需要優(yōu)化查詢語句,以提高數(shù)據(jù)庫查詢速度和效率。然而,在實際開發(fā)過程中,我們經(jīng)常會遇到mysql不走索引的情況,這會導(dǎo)致查詢效率低下,從而導(dǎo)致應(yīng)用程序變得非常緩慢。在下面,我們就來看一下,在哪些函數(shù)下,mysql會不走索引。
在以下情況下,MySQL不走索引: 1.函數(shù)調(diào)用查詢 比如,這個查詢不會使用索引: SELECT * FROM user WHERE year(regtime) = 2018; 而這個查詢會使用索引: SELECT * FROM user WHERE regtime >= '2018-01-01' and regtime<= '2018-12-31'; 2.表達(dá)式運算查詢 比如,這個查詢不會使用索引: SELECT * FROM user WHERE id%10=8; 而這個查詢會使用索引: SELECT * FROM user WHERE id>=8 AND (id-8)%10=0; 3.列函數(shù)查詢 比如,這個查詢不會使用索引: 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進(jìn)行查詢時,如果能夠避免在不支持索引的函數(shù)下進(jìn)行查詢,就可以提高數(shù)據(jù)庫的查詢效率和速度。因此,在實際開發(fā)中,我們應(yīng)該盡量避免在不支持索引的函數(shù)下進(jìn)行查詢,以優(yōu)化mysql數(shù)據(jù)庫的性能。
下一篇mysql中集合