• SQL Server技术问题之索引优缺点


    索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。

    优点:

      正确的索引会大大提高数据查询、对结果排序、分组的操作效率。

    缺点:

    1、存储空间,每个索引都要空间存储
    2、如果非聚集索引很多,一旦聚集索引改变,那么所有非聚集索引都会跟着变。
    3、过多索引会导致优化器优化过程需要评估的组合增多。
    4、每个索引都有统计信息,索引越多统计信息越多。
    5、更新开销,一旦一个数据改变,并且改变的列比较多,可能会引起好几个索引跟着改变。

    分类:

    聚集索引>>聚集索引基于数据行的键值,在表内排序和存储这些数据行。每个表只能有一个聚集索引,应为数据行本分只能按一个顺序存储。

      在聚集索引中,表中各行的物理顺序与索引键值的逻辑(索引)顺序相同。聚集索引通常可加快UPDATE和DELETE操作的速度,因为这两个操作需要读取大量的数据。创建或修改聚集索引可能要花很长时间,因为执行这两个操作时要在磁盘上对表的行进行重组。

    非聚集索引>>因为一个表中只能有一个聚集索引,如果需要在表中建立多个索引,则可以创建为非聚集索引。表中的数据并不按照非聚集索引列的顺序存储,但非聚集索引的索引行中保存了非聚集键值和行定位器,可以快捷地根据非聚集键的值来定位记录的存储位置。

      非聚集索引,本质上来说也是聚集索引的一种.非聚集索引并不改变其所在表的物理结构,而是额外生成一个聚集索引的B树结构,但叶子节点是对于其所在表的引用,这个引用分为两种,如果其所在表上没有聚集索引,则引用行号。如果其所在表上已经有了聚集索引,则引用聚集索引的页.

    使用原则:
    1:不要索引数据量不大的表,对于小表来讲,表扫描的成本并不高。
    2:不要设置过多的索引,在没有聚集索引的表中,最大可以设置249个非聚集索引,过多的索引首先会带来更大的磁盘空间,而且在数据发生修改时,对索引的维护是特别消耗性能的。
    3:合理应用复合索引,有某些情况下可以考虑创建包含所有输出列的覆盖索引。
    4:对经常使用范围查询的字段,可能考虑聚集索引。
    5:避免对不常用的列,逻辑性列,大字段列创建索引。

  • 相关阅读:
    dragloader.js帮助你在页面原生滚动下实现Pull Request操作
    移动Web单页应用开发实践——实现Pull to Request(上/下拉请求操作)
    【转】移动Web单页应用开发实践——页面结构化
    前端网址收集!Amazing! 神奇!
    前端代码书写规范
    扫描工具 分析
    backtrack5渗透 笔记
    Sqlmap注入技巧集锦
    nmap 高级扫描用法
    小温谈数据库优化--数据设计篇(转)
  • 原文地址:https://www.cnblogs.com/zuowj/p/3520509.html
Copyright © 2020-2023  润新知