平时用到的索引,有这么几种:聚集索引,非聚集索引,联合索引,索引覆盖。
聚集索引(clustered index):聚集索引决定数据在磁盘上的物理排序,一个表只能有一个聚集索引,一般用primary key来约束。俗称主键。
非聚集索引(non-clustered index):它并不决定数据在磁盘上的物理排序,索引上只包含被建立索引的数据,以及一个行定位符row-locator,这个行定位符,可以理解为一个聚集索引物理排序的指针,通过这个指针,可以找到行数据。俗称一般索引。
联合索引:多个字段上建立的索引,能够加速复核查询条件的检索。
举例,登录需求:
select user_id, login_at from user where user_name=? and passwd=?;
可以建立(login_name, passwd)的联合索引。
索引覆盖:被查询的列,数据能从索引中取得,而不用通过行定位符row-locator再到row上获取,即“被查询列要被所建的索引覆盖”,这能够加速查询速度。