2014年3月20日 星期四

[紀錄]一些問題紀錄(會更新)

[紀錄]
1.如何去下SQL Index?
Ans:
http://jackyshih.pixnet.net/blog/post/5839238-sql-server-index%E6%9E%B6%E6%A7%8B%E8%AE%80%E5%BE%8C%E5%BF%83%E5%BE%97

註記:原先已經知道index 是用B-tree的資料結構去組成,但不是很清楚何時該給哪個欄位下index,只知道是常查詢的欄位或是唯一是別值。
上面有解答,在此節錄出來:
Clustered Index 設計守則

盡量排除:
1.更新頻率過高的欄位,因為clustered index 每次更新都會對實體資料進行sort,如果資料量大,sort time 會花不少時間處理,所以不建議。
2.獨特性過高的欄位:沒意義

建議列入設計考量:
以查詢考量分
1.連續性的範圍查詢結果:因為實體資料是按照鍵值依序地存入HD中,若依Between >= <= 等符號查詢時,當系統找到第一筆資料後,依序逐筆往下讀取,查詢的結果是連續性的範圍,則執行的速度也會提升。
2.會用於JOIN指令中的欄位建議加入,一般都是foreign key
3.會用於order by or group by 指令中,若索引見值常用於order by 與 group by 中時,因為實體資料已經排序好了,系統不在進行排序動作,所以會增加執行的速度。

以欄位考量
1.單一性(unique)或多個得特性欄位的組合
2.欄位具有順序性範圍的查詢:就是使用者常用between or >= , <= 來查詢的頻率很高的欄位
3.被定義成IDENTITY欄位
4.常常被用來order by or group by 的欄位,原因同上。

以上是Clustered Index 部分