SQL-索引的合理规划及索引失效

索引的目的:提高查询性能;

索引的弊端:1)对数据进行增删改操作时更慢,因为进行这些操作需要进行索引的维护,2)占用更多的磁盘空间;

索引的建立,应该根据实际情况来选择:

1:表是经常被读(取),还是被写(入),大多数表都是读取大于写入,建立索引是可以的,但一些特殊的表,如日志记录,是写入大于读取,因此不适合建索引;

2:是否经常使用表的该列进行条件过滤查找?如:自我介绍;

3:该列上行数据类型和大小:行数据类型越简单,比较速度快,空间小,不会有空间压力,适合建立索引,反之,不适合;

4:各行数据分散(不重复)程度:重复度越高,无法建立一个高效的查询树;典型的就是BIT类型,都是0和1,没有索引价值,不要觉得少了1/2查询次数就够了,理想的索引,应该是指数级的性能优化;

另:聚集索引是最高效的,应该把它作用在最常用最合适的列上(通常为ID列)

索引失效

即使创建了索引,也不能保证SQL Server一定会执行索引,原因来自:

执行计划:主要作用是对查询进行优化,一条SQL查询(复杂查询)语句,可能有多种途径实现,执行计划会为我们选择一个最佳‘路径实现’;

SQL Server会解析SQL语句,当明白我们查询目的时,自动生成执行计划,并根据执行计划进行查询;

SQL-索引的合理规划及索引失效

上一篇:西游记词频统计


下一篇:Elasticsearch之IK分词器配置