zoukankan      html  css  js  c++  java
  • WHERE谓词对索引使用的影响

    本篇博文只测试WHERE谓词对multi-column index使用的影响,主要篇幅是SQL代码+截图。详细内容请参考《Inside the SQL Server Query Optimizer 》--Benjamin Nevarez,Chapter 4:Index Selection-->The Mechanics of Index Selection(Page124).

     1 --利用AdventureWorks.Sales.SalesOrderDetail 创建临时表
     2 SELECT * INTO dbo.SalesOrderDetail
     3 FROM Sales.SalesOrderDetail
     4 --运行下面语句查看执行计划
     5 SELECT ProductID,SalesOrderID,SalesOrderDetailID FROM dbo.SalesOrderDetail --table scan
     6 --创建复合索引
     7 CREATE INDEX multi_column ON dbo.SalesOrderDetail(ProductID,SalesOrderID)
     8 --分别运行在索引第一列、第二列的 where条件查询
     9 SELECT ProductID,SalesOrderID,SalesOrderDetailID FROM dbo.SalesOrderDetail
    10 WHERE ProductID=771 --index seek
    11 SELECT ProductID,SalesOrderID,SalesOrderDetailID FROM dbo.SalesOrderDetail
    12 WHERE SalesOrderID=45233 --index scan
    13 SELECT ProductID,SalesOrderID,SalesOrderDetailID FROM dbo.SalesOrderDetail
    14 WHERE ABS(ProductID)=771 --talbe scan

    1 --分别运行在索引第一列、第二列的 where条件查询
    2 SELECT ProductID,SalesOrderID,SalesOrderDetailID FROM dbo.SalesOrderDetail
    3 WHERE ProductID=771 AND SalesOrderID> 45233 --seek ProductID,seek SalesOrderID
    4 SELECT ProductID,SalesOrderID,SalesOrderDetailID FROM dbo.SalesOrderDetail
    5 WHERE ProductID=771 AND ABS(SalesOrderID)=45233 --seek ProductID,scan SalesOrderID
    6 SELECT ProductID,SalesOrderID,SalesOrderDetailID FROM dbo.SalesOrderDetail
    7 WHERE ProductID<771 AND SalesOrderID=45233 --seek ProductID,scan SalesOrderID


    索引第一列为‘=’,第二列没含操作表达式,则两列都可以用 seek,与where 后面的顺序无关
    索引第一列为‘=’,第二列有操作表达式 (abs,upper,convert...),则第一列seek,第二列 scan,与where 后面的顺序无关
    索引第一列不是‘=’,则第一列 seek,第二列scan ,与where后面的顺序无关

    1 DROP TABLE dbo.SalesOrderDetail --删除测试表
    【作者】: 醒嘞
    【出处】: http://www.cnblogs.com/Uest/
    【声明】: 本文内容仅代表个人观点。如需转载请保留此段声明,且在文章页面明显位置给出原文链接!
  • 相关阅读:
    利用 pandas库读取excel表格数据
    Spark学习笔记3——RDD(下)
    Spark学习笔记2——RDD(上)
    Spark学习笔记1——第一个Spark程序:单词数统计
    Spark学习笔记0——简单了解和技术架构
    java标识符和关键字
    数据库事务ACID特性(原子性、一致性、隔离性、持久性)
    大数据系统的运行
    虚拟机和hadoop
    大数据基础1
  • 原文地址:https://www.cnblogs.com/Uest/p/3521458.html
Copyright © 2011-2022 走看看