zoukankan      html  css  js  c++  java
  • SQL SERVER 性能优化三: 索引对数据库的影响

    1、主键选取

    2、聚集索引必须建立在主键上吗?

    聚集索引是将索引列数据进行排序后放入B树;

    聚集索引可以不建立在主键上,主键的作用是唯一标识符,只是一般将聚集索引设置在主键上。

    3、聚集索引可以有重复值吗

    可以,但是会耗费更多内存,推荐聚集索引所在列使用唯一键。

    4、强制走索引

    查询不走索引时,可在查询语句后添加WITH (INDEX(QueryAA_Index)) ,强制执行索引。

    (1)下面给出查询语句实例和逻辑读取次数

    --数据表为BasicMsg20170331,且在AA字段上有非聚集索引
    SELECT * FROM BasicMsg20170331  WHERE  AA=7867695
    --Table 'BasicMsg20170331'. Scan count 1, logical reads 4881, physical reads 0, read-ahead reads 4888, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    SELECT * FROM BasicMsg20170331 WITH (INDEX(QueryAA_Index))  WHERE  AA=7867695 -- AND RecvTime<=89600000 

      --Table 'BasicMsg20170331'. Scan count 1, logical reads 1774, physical reads 10, read-ahead reads 20, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0

    从上结果可以看出,当添加了强制执行索引时,逻辑读变少了很多,但是物理读取增加了10次。

    PS:物理读是内容不在内存中,要去硬盘中读入内存,会 增加IO开销
    逻辑读内容在内存中,不需要读硬盘 ,无IO开销

    只此一生,与子白头
  • 相关阅读:
    python D20 多继承、C3算法、super()
    python D19 约束、日志
    python D18 反射与md5 加密
    python D17 类与类之间的关系
    python D16 成员
    python D15 面向对象
    python D14 内置函数二
    python D13 内置函数
    python D12 生成器以及生成器表达式
    oracle函数
  • 原文地址:https://www.cnblogs.com/Miss-Bueno/p/7381931.html
Copyright © 2011-2022 走看看