台灣最大程式設計社群網站
線上人數
1178
 
會員總數:246227
討論主題:189787
歡迎您免費加入會員
討論區列表 >> MS SQL >> SQL語法效能提升問題
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
SQL語法效能提升問題
價值 : 30 QP  點閱數:1629 回應數:6
樓主

HKT
門外漢
0 6
170 10
發送站內信


各位大大,請教如下SQL語法如何提升效能呢?因目前讀取30多筆資料就要花40秒,若資料筆數接近一萬筆想必非常恐怖,請教可以如何修改呢?感恩~


搜尋相關Tags的文章: [ 效能提升 ] ,
本篇文章發表於2015-11-03 19:10
1樓
我覺得你要幾個欄位就SELECT 你要的欄位就好 SELECT * 如果欄位多到爆 資料筆數一旦很多 這絕對慢
還有善用(NOLOCK)
本篇文章回覆於2015-11-03 19:16
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

pilipala
檢舉此回應

從最後 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
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.