![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 HKT ![]()
![]() |
各位大大,請教如下SQL語法如何提升效能呢?因目前讀取30多筆資料就要花40秒,若資料筆數接近一萬筆想必非常恐怖,請教可以如何修改呢?感恩~
搜尋相關Tags的文章:
[ 效能提升 ] ,
本篇文章發表於2015-11-03 19:10 |
1樓 |
我覺得你要幾個欄位就SELECT 你要的欄位就好 SELECT * 如果欄位多到爆 資料筆數一旦很多 這絕對慢
還有善用(NOLOCK)
本篇文章回覆於2015-11-03 19:16
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
2樓 |
從最後 SELECT 出來的結果來看,B table 內的 cipe2 和 cipe3 欄位 和 C Table 本身,好像都不需要吧? 有建立適當的索引嗎?
本篇文章回覆於2015-11-03 22:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
3樓
不錯的參考
Hsu,Harry ![]() |
煩請說明以下問題, 另外也要提供每個TABLE目前的筆數及INDEX及Execution Plan, 以所提供語法,判斷應該該由其SBIN(A)為driving table 因此特別要提供Index 1. dbLookup (C): 應該無用 2. dbAData2 (B): GROUP BY方式不合理 3. SBIN(A): 提供INDEX 其實SQL先整理一下,就大概可看出一些問題, 寫一長串很難分析的。
本篇文章回覆於2015-11-04 04:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
4樓
作者回應
HKT ![]() |
感謝各位大大給小弟一些方向,
以下回答Hsu,Harry大大,謝謝 附上 A Table ----- lotno,BLotno,BSPEC,BQty,ID,Datein,station B Table ----- lotno,cipe,Results 其中cipe表示如AB-65q4321q-LOL,只需要取頭尾的值 C Table ----- itemname,item1,item2,Item3 呈現結果 ------ lotno,BLotno,BSPEC,BQty,ID,Datein,station,agrade,aQty,compare 再次感謝大大們的幫忙~
本篇文章回覆於2015-11-04 09:04
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
5樓
最有價值解答
Hsu,Harry ![]() |
半導體資料。CP / HIST資料??
不過您仍未回答以下問題: 1. dbLookup (C): 應該無用 ? 2. dbAData2 (B): GROUP BY合理性 ? 3. SBIN(A): 提供INDEX <==要提供, 因為是driving table。 SBIN(A)的各組INDEX, 也要dbAData2(B)的INDEX。各Table筆數最好也有,若可以提供類似直方統計值是最好。 (B)的GROUP BY似乎不合理, 只有"你"才知道資料特性,用"猜"是極具有風險性。 另外,沒回(C) 是不是有用,就SQL上判斷應無用就移掉。暫提供以下SQL,煩請測試。
本篇文章回覆於2015-11-04 09:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
6樓
作者回應
HKT ![]() |
Hsu,Harry 大大你好,此問題後來已得到協助,但需求又修改了,因此不需要此段SQL語法,但還是感謝大大們的相助
本篇文章回覆於2015-11-04 18:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |