作者evernever (Neverever)
看板Database
標題Re: [SQL ] 叢集(cluster)非叢集(noncluster)
時間Wed Apr 14 12:23:33 2010
※ 引述《shiengchyi (上班族之朝九晚六?!)》之銘言:
: 由於目前面臨到要處理大量資料(1000w筆),
: 所以在了解關於叢集(cluster)和非叢集(noncluster)的問題,
: 根據我拜請Google大神的結果,
: 一般設定的PKey MSSQL預設是 cluster,每個Table只能有一個(組) PKey,
: 每個Table 也只能有一個cluster index(es),
: 因為cluster index是實際存放在硬體當中的順序。
: 相較於noncluster index,每個Table 至多可以有 999 個 (By MSDN),
: 針對常用的查詢欄位來設定 noncluster index的話,可以有效的增加查詢的速度,
: 以上是小弟的了解,以下是用來表達問題的例子:
: Table Map裡面有三個欄位:[index](autoIncrease),X,Y;用於紀錄某座標發生事件,
: (X,Y)用來表示座標,同一個座標可能發生多個事件,所以增加一個[index]欄位,
: 我的疑問是,我應該三個欄位視為一組Pkey,
: 還是以[index]為PKey,然後將X,Y設定成 ununique noncluster indexes,
: 其目的是為了能夠加速資料查詢,還請有經驗的鄉民解惑,感謝 ^^
等推文時間 等得不耐煩了...直接回
=============
怎麼設 index 是看你 query 條件的次數
當然在大多的情況 primary key = cluster index 是最頻繁查詢的條件
如果你還蠻頻繁的查詢 x = ? and y = ?, 那把 x,y 設成 non-cluster 是不錯的選擇
個人覺得 index,x,y 沒必要設成 non-cluster, index 已經是 cluster
頂多再把 x,y 設成 non-cluster 即可
一些淺見, 僅供參考
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 124.170.209.176
→ PsMonkey:XD 打這麼多字用推文的更累吧? XDXD 04/14 13:04
推 blestadsl:請問如果是order by的欄位~設index會不會比較快? 04/14 13:11
推 shiengchyi:感謝解答 ^__^ 04/14 15:58
→ evernever:orderby不確定會比較快,但MSSQL有工具可以分析 忘了叫啥 04/15 06:41
推 blestadsl:分析完是成本n%的那種嘛?...不知道是10%快~還是90%快 04/15 07:13