如果在 SqlProfiler 中,您可以看到执行查询时启动了扫描,这是否意味着全表扫描,还是只是查找?如果两者都可以,你怎么知道它是两者中的哪一个?
问问题
719 次
1 回答
4
从文档中:
Scan:Started事件类在表或索引扫描开始时发生。
所以它可能是任何一个。该IndexID
字段将告诉您它是否是索引,以及哪个索引。
并不是说它真的很重要。聚集索引扫描基本上是表扫描。非聚集索引扫描更好,但只有一点点。如果您看到任何完整扫描,则意味着 (a) 您正在使用不可分割的谓词或未索引字段的谓词,或者 (b) 谓词字段已编入索引但输出列未包含在索引,并且优化器已决定执行完整扫描比书签/RID 查找更便宜。
就性能而言,索引扫描通常并不比表扫描好多少,因此如果可能的话,您应该尝试消除导致它的任何原因。
于 2010-03-13T20:24:58.043 回答