2016-03-15 47 views
0

我有如下所示搜索行時,它的每個列將匹配目標範圍(整數)

----------------------------------- 
|id | price | A | B | C | ... | Z | 
----------------------------------- 

A的每個列中的SQL表 - Z具有值B/T 0 - 99

我想搜索匹配我的目標值範圍的所有行。

例如。目標(A:62,B:14,... Z:99),找到每一行,其對應的值大於或等於目標值。

因此查詢將會像

select id, MAX(price) where A >= user.a AND B>=user.b And.. AND Z >= user.z 

我的問題是如何優化它。

如果我把表拆成幾塊並做一個嵌套查詢,它會更快嗎?還是有一些我應該使用的技術?

編輯:我沒有索引我所有的屬性列,(因爲更新表是不是我的businese)而且,我實際上添加了2列,第一是總和:所有列的總和;第二個是max_num:所有列的最大數量。然後在這兩個數字上針對目標基礎創建一個視圖,然後執行搜索。

謝謝大家提前!

謝謝你幫我把它們放在代碼樣式文本中!

+0

你試過運行你的代碼?表現如何?不要成爲過早優化的犧牲品。 –

回答

0

創建一些索引可能會加快查詢速度。

,如:

create index i1 on t1(A); 
create index i2 on t1(B); 
create index i3 on t1(C); 
+0

Ture,索引幫助我猜測,我應該在我的問題中加上。而且,我其實加了2列,1是總和:所有列的總和;和max_num:所有列的最大數量。然後在這兩個數字上針對目標基礎創建一個視圖,然後執行搜索。 – idler1515