Include Column组合索引数据存储结构示例:

  SQLServer管理器的SQL优化自动索引推荐经常看到推荐Include Column方式。

  MySQL:不支持,只能用组合索引代替

  Oracle:不支持,只能用组合索引代替

  三、聚集索引(Cluster Index)

  数据库通常用两种存储方式,一种是堆表,即表中的数据是基本无序的,像往一个房间(数据块)堆箱子(记录)一样,只要有空间往里面放,放满了准备一个新房间再放。

  另外一种是聚集存储,数据按表中一个或几个字段排序存储,如下图所示。

  由于要排序,需要索引来保证效率,所以聚集存储和聚集索引存储通常指一个意思。

  SQLServer

  如果表没有主键默认为堆表,如果有主键默认为按主键聚集存储。SQLServer支持非主键索引聚集存储,这个特性非常有意义,比如订单表有订单ID(主键)和会员ID,如果按订单ID聚集存储,由于订单ID一般都是随机访问,返回单条记录,所以对按订单ID查询没有什么性能提高。假设需按会员ID查询,一个会员有许多订单,分页一次返回20条,那需要20次离散数据访问。

  如果可以按会员ID聚集存储,那用会员ID查询可能只需要1次离散数据访问可以,性能可以提升很多,这种方式对订单插入有一些性能影响,如果订单插入不多,按会员查询频繁,那按会员ID建聚集索引给用订单ID聚集效果很好。