星期五, 10月 01, 2004

術業有專攻

前幾天測試了一個 SQL Query,大約 5 萬多筆資料,利用 Primary Key(cust_id, cust_type) 去找一筆紀錄:

select * from customer_data where cust_id = ? and cust_type = ?

此 SQL Statement 竟然跑了半分鐘之久 ( DB2 的 Bug? )。
若換成另一種下法:

select * from customer_data where cust_id = ?

速度則非常快,看來問題出在 cust_type 的條件上,試過多種組合,若有搭配 cust_type 使用,都會非常的慢,若只單純找 cust_type = ? ,速度又變快。最後的做法是將 cust_type 建立索引,速度則正常了。

經過此次的經驗,讓我知道,調整 DB 與否,竟然存在著如此大的差異。雖然知道沒用索引會慢,但慢的速度真的太令人訝異了。我想可能是 DB2 的問題吧,理論上 Primary Key 是一定會有索引的,不知為何 DB2 是這樣的結果。

術業有專攻,DBA 是很重要的。經驗的累積更是重要。

0 Comments:

張貼留言

<< Home