最近系統流量大,在db遇到些瓶頸
經過dba分析,對index也有比較深入的瞭解
還挺了滿多觀念的,一時還無法全吸收
再慢慢整理了
經過dba分析,對index也有比較深入的瞭解
- index不只index
以前說設index,就只知道較常查詢的欄位拿來設為index就好了
經dba細心分析,才知道除了設定外,連多個欄位組合的index前後的順序也有差
較常查詢的欄位要放前面 - select除了設index外,還可以...
可以針對sql語句,帶出指定的select column,也可以指定where的column - insert, update也可以設定index
- cluster index & noncluster index
看不懂這東西,經dba解釋
cluster index會將同table的其他欄位一起帶出
所以cluster index只會有一個
反之nocluster不會,不過就可以彈性的指定必要的欄位 東西帶的少了,搜尋效率自然提升
- no lock
可以dirty read的select就加no lock(mssql)吧
避免waiting - db的原生函式會造成full table scan
本想說先在sql的where句做了一些轉型,這樣比較好過濾
但dba提出這造成full table scan,效能很差
改完後,這top sql(slow log)就不見了 - 用變數存GETDATE
條件式或異動欄位常用到GETDATE(),有隻SQL用到5次
DBA建議先存變數裡,這樣compile 1次,也只跑1次
還挺了滿多觀念的,一時還無法全吸收
再慢慢整理了