谈聚集索引,非聚集索引及在sqlite使用。

谈聚集索引,非聚集索引及在sqlite使用。,第1张

概述聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个。 聚集索引存储记录是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续。 create clustered index  dcity on city(name)    // 创建聚集索引 create unclustered index dcity on city(name)   // 创建非聚集索引 先说优点: 大大加快数据的检

聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个。

聚集索引存储记录是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续。

create clustered index  dcity on city(name)    // 创建聚集索引

create unclustered index dcity on city(name)   // 创建非聚集索引

先说优点:

大大加快数据的检索速度,这也是创建索引的最主要的原因 加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。 在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。

再说缺点:

创建索引需要耗费一定的时间,但是问题不大,一般索引只要build一次 索引需要占用物理空间,特别是聚集索引,需要较大的空间 当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度,这个是比较大的问题。

索引覆盖: 索引所存储的内容就是最终输出的数据

 

sqlite不支持聚集索引,androID默认需要一个”_ID”字段,这保证了你插入的数据会按“_ID”的整数顺序插入,这个integer类型的主键就会扮演和聚集索引一样的角色。所以不要再在对于声明为:INTEGER PRIMARY KEY的主键上创建索引。

很多对索引不熟悉的朋友在表中创建了索引,却发现没有生效,其实这大多数和我接下来讲的有关。对于where子句中出现的列要想索引生效,会有一些限制,这就和前导列有关。所谓前导列,就是在创建复合索引语句的第一列或者连续的多列。比如通过:CREATE INDEX comp_ind ON table1(x,y,z)创建索引,那么x,xy,xyz都是前导列,而yz,y,z这样的就不是。下面讲的这些,对于其他数据库或许会有一些小的差别,这里以sqlite为标准。在where子句中,前导列必须使用等于或者in *** 作,最右边的列可以使用不等式,这样索引才可以完全生效。同时,where子句中的列不需要全建立了索引,但是必须保证建立索引的列之间没有间隙。

总结

以上是内存溢出为你收集整理的谈聚集索引,非聚集索引及在sqlite使用。全部内容,希望文章能够帮你解决谈聚集索引,非聚集索引及在sqlite使用。所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1158776.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存