如果在 SqlProfiler 中您可以看到执行查询时扫描已启动,这是否意味着全表扫描还是只是查找?如果两者都可以,你怎么知道是两者中的哪一个?
最佳答案
来自documentation :
The Scan:Started event class occurs when a table or index scan is started.
所以可能是其中之一。 IndexID
字段将告诉您它是否是索引以及是哪个索引。
并不是说这真的很重要。聚集索引扫描基本上是表扫描。非聚集索引扫描更好,但也只是一点点。如果您看到任何完整扫描,则意味着 (a) 您正在使用不可控制谓词或对未索引的字段使用谓词,或者 (b) 谓词字段已建立索引,但输出列未被索引覆盖。索引,并且优化器决定执行完整扫描比书签/RID 查找更便宜。
就性能而言,索引扫描通常并不比表扫描好多少,因此如果可能的话,您应该尝试消除导致索引扫描的任何因素。
关于sql-server - SqlProfiler 扫描启动是否错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2439890/