zoukankan      html  css  js  c++  java
  • 聚集索引和非聚集索引

    SQL Sever索引类型有:唯一索引,主键索引,聚集索引,非聚集索引。

    聚集索引:数据行的物理顺序与列值(一般时主键的那一列)的逻辑顺序相同,一个表中只能拥有一个聚集索引。

    创建聚集索引,系统会自动创建一个隐含列作为表的聚集索引

    添加聚集索引  create clustered index clustered_index on table_name(colum_name)

    非聚集索引:该索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同,一个表中可以拥有多个非聚集索引,除聚集索引外,都是非聚集索引,非聚集索引的结构顺序与实际存放的顺序不一定一致。

    非聚集索引叶节点仍然是索引节点,只是有一个指针指向对应的数据块,此如果使用非聚集索引查询,而查询列中包含了其他该索引没有覆盖的列,那么他还要进行第二次的查询,查询节点上对应的数据行的数据。

    在sql server 里面会对查询自动优化,选择适合的索引,数据量不大的情况下,sql server 很有可能不会使用非聚集索引进行查询,而使用聚集索引查询,即便需要扫描整个聚集索引,效率也比使用非聚集索引效率要高。

    解决非聚集索引二次查询的问题:复合索引

    四.总结与使用心得

    1. 使用聚集索引的查询效率要比非聚集索引的效率要高,但是如果需要频繁去改变聚集索引的值,写入性能并不高,因为需要移动对应数据的物理位置。
    2. 非聚集索引在查询的时候可以的话就避免二次查询,这样性能会大幅提升。
    3. 不是所有的表都适合建立索引,只有数据量大表才适合建立索引,且建立在选择性高的列上面性能会更好。
    111111
  • 相关阅读:
    创建文件并写入内容
    java自动压缩文件并加密
    Java自动发送带图片邮件(带附件)
    eclipse正则表达式搜索
    解决:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
    spring整合mybatis(原始dao和mapper代理两种方式)
    (解决)mysql1366中文显示错误的终极解决方案
    pdf合并、拆分工具
    ScheduledExecutorService定时方法
    json数据包含特殊字符解析失败
  • 原文地址:https://www.cnblogs.com/whl4835349/p/9244595.html
Copyright © 2011-2022 走看看