2010-05-17 57 views
0

我正在優化我的一些查詢,並且我有一個查詢指出: select * from SC where c_id =「+ c_id」 ** SC **的模式看起來像這樣:索引問題:使用WHERE子句選擇*。在哪裏以及如何創建索引

SC ( c_id int not null, date_start date not null, date_stop date not null, r_t_id int not null, nt int, t_p decimal, PRIMARY KEY (c_id, r_t_id, date_start, date_stop)); 

我上應創建的索引是如何在這個順序覆蓋索引即時競價:

INDEX(c_id, date_start, date_stop, nt, r_t_id, t_p) 

這樣做的原因爲了我立足於:

的其中CLA使用c_id中的選擇,從而使其成爲第一個排序順序。 接着,DATE_START和date_stop到指定排序的「範圍」,在這些參數 接着被定義,NT因爲它會選擇NT 接着r_t_id,因爲它是爲特定類型的我的r_t表的ID 最後是t_p,因爲它只是一個信息。

我不知道當它是一個SELECT ALL語句時,是否有必要以特定方式對它進行排序。 我應該說,那個SC不是最大的桌子。我可以說,有多少行包含但估計可能是<和1000

接下來的事情之間10補充說明的是,該SC,在不同的查詢,將數據插入的SC,和我知道有插入表的索引可能會導致成本低,但是我能否以某種方式創建一個有效實現這種性能的金色中端方法。

不知道它是否有不同,但我使用IBM DB2版本9.7數據庫

真誠

Mestika

回答

0

既然你是在談論一個最大的1000行,不要」除非在生產中遇到問題,否則不要太在意索引。我從來沒有見過一個1000行的桌子是一個問題。順便說一句,你配置C_ID作爲主鍵。因此,您不需要額外的索引,因爲表已經使用主鍵進行了排序。