sql-server - SqlProfiler 扫描启动是否错误?

标签 sql-server sql-server-profiler

如果在 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/

相关文章:

sql-server - 为什么我的 SSIS 包中的连接不断丢失?

sql - 将行合并到列

php - XAMPP 是否支持 SQL Server?

sql-server - Linq 性能 : Two queries, 第一个立即响应,第二个非常慢

sql - 为什么我的 sql server profiler 只显示空白模板

c# - 在 C# 应用程序中模仿 SQL Server Profiler?

sql-server - 为什么 NULL 读取在我的 SQL 跟踪中如此之高?

sql - 从 CSV 文件批量插入 - 跳过重复项

sql-server - 使用 SQL Server Profiler 捕获查询结果

.net - Oracle 的 Sql 分析器