※ 引述《BigLoser (大鲁蛇)》之铭言:
: 最近看了一个mssql 2012的数据库,
: 索引的报表里面有一个index,被index scan的机率还不低,
: 而且这个table没有做PK,不过这个index有设唯一,
: 网络上看到说,如果你的PK被index scan那状况就是table scan,
: 那我现在这个状况也是table scan吗?
: 需要改善查询语法吗?
: 谢谢喔
透过 SSMS 内建立 Primary Key 默认就是 Clustered Index,
根据有没有 Clustered Index 可以把 Table 分为两种架构,
1. 没有 Clustered Index 的架构 - Heap,会是 Table Scan
2. 有 Clustered Index 的架构 - B-Tree,会是 Index Scan
建立一个 Table,透过执行计画就可以观察到有没有 Clustered Index 的 Scan 模式
通常会建议要建立 Clustered Index,假如没有明确的 Primary Key 字段,
可以建立一个 identity 或 Sequence 字段来当 Primary Key
这一点可以 Google "sql heap vs clustered index" 可以找到参考资料
个人意见:Index Scan 或 Table Scan 应该不是重点,
重点是 Scan 代表 T-SQL 并没有充分发挥索引