sqlite中使用索引

最近有个项目使用的是sqlite, 会涉及频繁的查询, 考虑查询条件字段加个索引, 遇到一些问题,在此记录一下。

sqlite中的简单索引都是差不多, 但是在复合索引上有问题, 这里涉及到一个前导列的概念,

简单的说就是比如 一个表中 有字段 a,b,c,d 我们创建4个字段为复合索引, 那么 a, ab, abc 都是前导列, 而 bd, cd就不是前导列。


sqlite中:

在WHERE子句中,前导列必须使用等于或者IN操作,最右边的列可以使用不等式,这样索引才可以完全生效。同时,WHERE子句中的列不需要全建立了索引,但是必须保证建立索引的列之间没有间隙。

而在mysql中,查询字段和索引字段顺序不必相同,mysql内部会自动优化为 顺序相同的


但是复合索引都遵循一个原则, 最左前缀匹配原则,例如:

查询条件:


都会使用索引

但是


这样就不会使用索引,导致查询效率低下


最后, 简单索引就不用考虑这些问题了。。。


网友评论

1条评论

发表

网友评论

1条评论

发表

最新评论

10月31日 23:29

推荐文章

彩龙

Copyright © 2008-2019 彩龙社区(http://www.clzg.cn) 版权所有 All Rights Reserved.

免责声明: 本网不承担任何由内容提供商提供的信息所引起的争议和法律责任。

经营许可证编号:滇B2-20090009-7

下载我家昆明APP 下载彩龙社区APP