扫描一定比查找慢吗
思韵闪耀
2012-05-13
0

1,
  SCAN   Seek
堆  Table Scan  无
聚集索引 Clustered Index Scan Clustered Index Seek
非聚集索引 Index Scan  Index Seek
非聚集索引扫描产生的原因:因Index只包含了表的一小部分字段,占用的页面数量会比表格本身要小得多,故扫描索引表就比聚集索引扫描要高得多。
前提是索引中包含了所要求的字段,但为什么没用索引查找呢,可能是在此字段上运行了运算,或此字段是联合索引的非首项。
2,扫描一定比查找慢吗?不一定
构造场景:订单明细表, DetailID聚集索引,OrderID非聚集索引。返回产品,操作人。
利用OrderID过滤,那么正常流程是先通过OrderID非聚集索引查找满足条件的字段,因要返回产品,操作人等信息故
要通过lookup查到聚集索引上的产品,操作人。注意这里面有一个lookup.现在假设同一个OrderID对应的明细非常多,那么在
lookup阶段要花费大量的时间,大大超过在OrderID查找带来的性能提升,这种情况下,还不如直接来个聚集索引扫描快一些。
故在实际中,会发现应用非聚集索引查找的地方换成了聚集索引扫描,因为此种情况下,扫描来得还快一些,即非聚集索引存在并不一定使用,
若出现这种情况,请检查非聚集索引是否有大量重复,看能否消除。


【版权声明】
本站部分内容来源于互联网,本站不拥有所有权,不承担相关法律责任。如果发现本站有侵权的内容,欢迎发送邮件至masing@13sy.com 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

上一篇: MsSql事务处理

下一篇: 知识链接

相关内容

热门资讯

sql中int型与varcha... sql中int转varchar或nvarchar,varchar或nvarchar转int的方法: ...
SQLSERVERAGENT ... 上的 SQLSERVERAGENT 服务启动过,然后又停止了。 (ObjectExplorer) 可...
SQL Server 中4个系... SQL Server 中4个系统数据库,Master、Model、Msdb、Tempdb 系统数据库...
SQL Server中如何设置... 对于已经建好的数据库表,是不能在SQL Server Management中可视化地修改ID为自增长...
该表已为了复制而被发布,所以... 场景:从发布库上将一数据库移到另一服务器,在对表改名时提示该表已为了复制而被发布,所以无法重命名。 ...
SQL Server 2008... SQL Server 2008 R2运行越久,占用内存会越来越大。 第一种: 有了上边的分析结果,解...
SQL Server (MSS... SQL Server (MSSQLSERVER) 启动后 自动生成文件 audittrace2022...
如果使用没有提供选项值的 Sq... 如果使用没有提供选项值的 SqlDependency,必须先调用 SqlDependency.Sta...
传递给数据库 'master'... 传递给数据库 master 中的日志扫描操作的日志扫描号无效 错误:连接数据库的时候提示:SQL S...
数据仓库SSAS+SSIS+... 数据仓库SSAS+SSIS+SSRS SSAS- 1,用ssas生成多维度,然后利用excel的da...