标签:记录 物理 默认 sql 完全 clust 优点 限制 数据
聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个。
聚集索引存储记录是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续。
create clustered index dcity on city(name) // 创建聚集索引
create unclustered index dcity on city(name) // 创建非聚集索引
先说优点:
再说缺点:
索引覆盖: 索引所存储的内容就是最终输出的数据
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子句中的列不需要全建立了索引,但是必须保证建立索引的列之间没有间隙。
标签:记录 物理 默认 sql 完全 clust 优点 限制 数据
原文地址:https://www.cnblogs.com/songsh/p/7212192.html