線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1550
推到 Plurk!
推到 Facebook!

增加KEY值後,程式執行速度變慢

答題得分者是:herbert2
fortunate1986
一般會員


發表:6
回覆:10
積分:3
註冊:2010-08-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-12-03 11:55:52 IP:220.132.xxx.xxx 訂閱
公司在上週因一個專案,在資料庫存放發票的table 增加'發票日期'為key值
最近幾天有據點提出發票開立的預覽畫面出現速度變慢
詳細狀況如下
資料庫oracle8 報表元件quickreport
增加key值前 報表跳出速度為5秒
增加key值後 報表跳出速度為50秒.....
並無更動程式
且將Qrp裡的QUERY.SQL 在資料庫執行時,並無數度上的影響,不知是否有經驗的大大能協助,謝謝
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-12-08 23:40:03 IP:202.39.xxx.xxx 訂閱
若將 key 中之 '發票日期' 刪除,會恢復為 5秒嗎?若否,便不是增加 key 值所造成。
或將 '發票日期' 置於 key 之最右端,可能便不影響 quickreport 讀資料的 index。
fortunate1986
一般會員


發表:6
回覆:10
積分:3
註冊:2010-08-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-12-09 00:01:43 IP:114.25.xxx.xxx 訂閱
拿掉key值後,速度並未恢復回五秒,尋找許多文章,好像都是需要調教index,但關於這部分並無類似的經驗。
懇請大大賜教。 :)

===================引 用 herbert2 文 章===================
若將 key 中之 '發票日期' 刪除,會恢復為 5秒嗎?若否,便不是增加 key 值所造成。
或將 '發票日期' 置於 key 之最右端,可能便不影響 quickreport 讀資料的 index。
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-12-09 08:38:02 IP:202.39.xxx.xxx 訂閱
既然不是增加 key 值所造成,則有幾個原則可以試試看:
1.儘量不使用 Primary Key,改用 Unique index,並存於另一個 Tablespace(若是在另一個實體磁碟機上則速度更佳)。
如此,通常會有較佳的速度及彈性,也可避免 Primary Key 出狀況時連帶毀損 Table。
2.查看 QR 中 Query 之 SQL 指令之 WHERE 條件(Oracle 會依它自動判斷使用那個 Index 找資料),
然後檢討 Index 檔是否有不恰當的 Key,造成 SELECT 緩慢。若找出,則予以適當的改變。
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2010-12-11 01:02:32 IP:202.39.xxx.xxx 訂閱
補充一點:
Oracle 可用
SELECT /* INDEX(TableName IndexName) */ ColumnName_List FROM Table_Or_View_Name WHERE Condition ORDER BY ColumnName_List
的方式指定 Index,以避免 Oracle 自動分析卻用了不恰當的 Index。
fortunate1986
一般會員


發表:6
回覆:10
積分:3
註冊:2010-08-23

發送簡訊給我
#6 引用回覆 回覆 發表時間:2010-12-14 08:41:42 IP:220.132.xxx.xxx 訂閱
謝謝您的協助,這個問題似乎已經改善很多,不過後來好像是下分析指令改善的,指令如下。
SQL> Analyze table SAL006 compute statistics;
系統時間:2024-04-19 18:13:02
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!