数据库联合索引

一、联合索引的特点

        索引有序+高度较低+存储列值

二、联合索引的好处

        避免回表。两个单列查询返回行较多,同时查返回行较少,联合索引更高效。

三、什么时候该用联合索引以及如何设计组合索引更高效

        (1)等值查询中,查询条件a返回的条目比较多,查询条件b返回的条目比较多,而同时查询a、b返回的条目比较少,那么适合建立联合索引;

        (2)对于有等值查询的列和范围查询的列,等值查询的列建在前、范围查询的列建在后比较实用;

        (3)如果联合索引列的前置列与索引单列一致,那么单列查询可以用到索引,这样就避免了再建单列索引,因此联合索引的前置列应尽量与单列一致;

四、使用索引需要注意的地方

        (1)超过3个列的联合索引不合适,否则虽然减少了回表动作,但索引块过多,查询时就要遍历更多的索引块了;

        (2)建索引动作应谨慎,因为建索引的过程会产生锁,不是行级锁,而是锁住整个表,任何该表的DML操作都将被阻止,在生产环境中的繁忙时段建索引是一件非常危险的事情;

        (3)对于某段时间内,海量数据表有频繁的更新,这时可以先删除索引,插入数据,再重新建立索引来达到高效的目的。

五、另外有些情况不适合建索引

        (1)很少参与查询的列。

        (2)对于增、删、改操作远大于查询的列。

        (3)对于很少数据值的列,例如性别。

        (4)对于那些结果集占了表数据总量很大比例的查询。

        (5)对于备注、文本框等长度很大的列。

你可能感兴趣的:(数据库,SQL优化,组合索引,sql)