最左前缀原则
定义:最左前缀原则指的的是在sql where 字句中一些条件或表达式中出现的列的顺序要保持和多索引的一致或以多列索引顺序出现,只要出现非顺序出现、断层都无法利用到多列索引。
举例说明:上面给出一个多列索引(username,password,last_login),当三列在where中出现的顺序如 (username,password,last_login)、(username,password)、(username)才能用到索引,如下面几 个顺序(password,last_login)、(passwrod)、(last_login)—这三者不从username开始, (username,last_login)—断层,少了password,都无法利用到索引。
因为B+tree多列索引保存的顺序是按照索引创建的顺序,检索索引时按照此顺序检索
测试:以下测试不精确,这里只是说明如何才能正确按照最左前缀原则使用索引。还有的是以下的测试用的时间 0.00sec看不出什么时间区别,因为数据量只有20003条,加上没有在实体机上运行,很多未可预知的影响因素都没考虑进去。当在大数据量,高并发的 时候,最左前缀原则对与提高性能方面是不可否认的。
Ps:最左前缀原则中where字句有or出现还是会遍历全表