如何增加查詢效率,增加index?? |
答題得分者是:yubad2000
|
jackiemi2_seed
中階會員 發表:37 回覆:97 積分:76 註冊:2006-09-11 發送簡訊給我 |
如何增加查詢效率,增加index??
主要table有二個:table_a,table_b 次要table有二個:table_x,table_y table_a 主要欄位有a_pk,b_pk,x_pk,y_pk....... 主鍵是a_pk 大約有50個欄位,30萬筆資料 table_b 主要欄位有b_pk,c_pk........ 主鍵是b_pk 大約有25個欄位,500筆資料 table_x 主要欄位有x_pk,x_name........ 主鍵是b_pk 大約有5個欄位,10筆資料 table_y 主要欄位有y_pk,y_name........ 主鍵是y_pk 大約有5個欄位,10筆資料 目前查詢sql語法大約是(sql語法1) select table_a.a_pk,x_name,y_name from table_a,table_x,table_y where table_a.x_pk=table_x.x_pk and table_a.y_pk=table_y.y_pk and table_a.b_pk=參數 現在要加入table_b(sql語法2) select table_a.a_pk,x_name,y_name from table_a,table_x,table_y,table_b where table_a.b_pk=table_b.b_pk and table_a.x_pk=table_x.x_pk and table_a.y_pk=table_y.y_pk and table_b.c_pk=參數 sql語法2查詢時,速度很慢,有時會有逾時之問題, 把table_a的b_pk欄位加一個index, table_b的c_pk欄位加一個index 速度沒有差很多49.94%:50.06%(用query analyzer的顯示評估的執行計劃,算出來的數據) 但sql語法1在table_a的b_pk欄位加一個index後 速度差很多,0.35%:99.65% 請問一下,有方法可以改善sql語法2的效率嗎????
------
OS : Win 7 pro Program : Delphi 7 DataBase : Ms Sql 2008 |
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
用 JOIN 或 LEFT JOIN, 請參考
http://www.wretch.cc/blog/sky4s&article_id=2250385 我用慣了 ORACLE, 如下 select table_a.a_pk,x_name,y_name from table_a,table_x,table_y,table_b where table_a.b_pk=table_b.b_pk( ) and table_a.x_pk=table_x.x_pk( ) and table_a.y_pk=table_y.y_pk( ) and table_b.c_pk=參數 意思是, 以 TABLE_A 為主檔, 其餘的全部 JOIN (參考)進來, 以使用 ORACLE 的經驗而言, 速度差很多
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
編輯記錄
st33chen 重新編輯於 2008-02-22 13:26:01, 註解 無‧
|
jackiemi2_seed
中階會員 發表:37 回覆:97 積分:76 註冊:2006-09-11 發送簡訊給我 |
改用join
select table_a.a_pk,x_name,y_name from table_a join table_b on table_a.b_pk=table_b.b_pk join table_x on table_a.x_pk=table_x.x_pk join table_y on table_a.y_pk=table_y.y_pk where table_b.c_pk=參數 速度一樣 但還是感謝st33chen兄的建議 用sql profiler的追蹤,執行sql語法2 把追蹤的結果用索引微調精靈 會在table_a加上index,把select出來的欄位都建立索引 加上索引後之速度,變快很多, 但只要select的欄位加上未在索引裡面的欄位 速度又慢下來了, table_a有50個欄位,這個程式會捉出table_a 20個欄位, 要把這麼多個欄位都拉進來作index???? 索引微調精靈產生的sql語法裡面有一句 CREATE STATISTICS [hind_1012198656_1A_4A] ON [dbo].[table_b] ([b_pk], [c_pk]) 請問一下,這是作什麼的?? thanks
------
OS : Win 7 pro Program : Delphi 7 DataBase : Ms Sql 2008 |
eaglewolf
資深會員 發表:4 回覆:268 積分:429 註冊:2006-07-06 發送簡訊給我 |
|
yubad2000
中階會員 發表:0 回覆:44 積分:78 註冊:2007-09-30 發送簡訊給我 |
Try the following things:
1. table_a (i) CREATE INDEX table_a_index2 ON table_a ( a_pk,b_pk,x_pk,y_pk ); (ii) ALTER TABLE table_a ADD FOREIGN KEY b_pk references table_b ADD FOREIGN KEY x_pk references table_x ADD FOREIGN KEY y_pk references table_y; 2. table_b (i) CREATE INDEX table_b_index2 ON table_b ( b_pk,c_pk ) (ii) ALTER TABLE table_b ADD FOREIGN KEY c_pk references table_c; ===================引 用 jackiemi2_seed 文 章=================== 如何增加查詢效率,增加index?? 主要table有二個:table_a,table_b 次要table有二個:table_x,table_y table_a 主要欄位有a_pk,b_pk,x_pk,y_pk....... 主鍵是a_pk 大約有50個欄位,30萬筆資料 table_b 主要欄位有b_pk,c_pk........ 主鍵是b_pk 大約有25個欄位,500筆資料 table_x 主要欄位有x_pk,x_name........ 主鍵是b_pk 大約有5個欄位,10筆資料 table_y 主要欄位有y_pk,y_name........ 主鍵是y_pk 大約有5個欄位,10筆資料 目前查詢sql語法大約是(sql語法1) select table_a.a_pk,x_name,y_name from table_a,table_x,table_y where table_a.x_pk=table_x.x_pk and table_a.y_pk=table_y.y_pk and table_a.b_pk=參數 現在要加入table_b(sql語法2) select table_a.a_pk,x_name,y_name from table_a,table_x,table_y,table_b where table_a.b_pk=table_b.b_pk and table_a.x_pk=table_x.x_pk and table_a.y_pk=table_y.y_pk and table_b.c_pk=參數 sql語法2查詢時,速度很慢,有時會有逾時之問題, 把table_a的b_pk欄位加一個index, table_b的c_pk欄位加一個index 速度沒有差很多49.94%:50.06%(用query analyzer的顯示評估的執行計劃,算出來的數據) 但sql語法1在table_a的b_pk欄位加一個index後 速度差很多,0.35%:99.65% 請問一下,有方法可以改善sql語法2的效率嗎????
------
===波士頓夜未眠=== What a wonderful world!! Jazz up the world with jazz!! ================== When I am not programming... you can find me here: http://www.holy-war.de/EN/World3/bin/?advertiser=63190 |
jackiemi2_seed
中階會員 發表:37 回覆:97 積分:76 註冊:2006-09-11 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |