Re: [SQL ] 非叢集索引掃描
※ 引述《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 並沒有充分發揮索引
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.158.7
※ 文章網址: http://www.ptt.cc/bbs/Database/M.1409903664.A.DAC.html
推
09/05 18:39, , 1F
09/05 18:39, 1F
→
09/05 18:40, , 2F
09/05 18:40, 2F
→
09/05 18:41, , 3F
09/05 18:41, 3F
→
09/05 18:41, , 4F
09/05 18:41, 4F
推
09/06 11:58, , 5F
09/06 11:58, 5F
→
09/06 11:59, , 6F
09/06 11:59, 6F
推
09/06 14:21, , 7F
09/06 14:21, 7F
推
09/06 14:58, , 8F
09/06 14:58, 8F
→
09/06 14:59, , 9F
09/06 14:59, 9F
→
09/06 14:59, , 10F
09/06 14:59, 10F
推
09/07 17:15, , 11F
09/07 17:15, 11F
推
09/07 17:17, , 12F
09/07 17:17, 12F
→
09/07 17:18, , 13F
09/07 17:18, 13F
→
09/09 08:39, , 14F
09/09 08:39, 14F
→
09/09 08:39, , 15F
09/09 08:39, 15F
推
09/09 09:35, , 16F
09/09 09:35, 16F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):