2014-12-23 105 views
0

在一個大的數據庫,是它更快地執行查詢如查詢速度

select * from table where a = 1 and b = 2 or b = 3 or b = 4; 

select * from table where a = 1 and b = 2; 
select * from table where a = 1 and b = 3; 
select * from table where a = 1 and b = 4; 
+0

我認爲它取決於如果'a'是關鍵或索引或不... –

+0

只是一個挑剔的筆記,第一個查詢將返回比你想象的要多得多,因爲缺少括號變量b。 'select * from table where a = 1 and(b = 2 or b = 3 or b = 4)' – Tommy

回答

1

正如其他人指出的那樣,查詢並不等同。我想第一個查詢應爲:

select * from table where a = 1 and (b = 2 or b = 3 or b = 4); 

爲清楚起見,我建議:

select * from table where a = 1 and b in (2, 3, 4); 

一般來說,這將執行比要求三個不同的查詢作爲第二選擇好。

2

您應該依靠數據庫管理系統做了優化你。如果第二個更快,那麼DBMS無論如何都會這樣做。

與第一個一起去(但是像Tommy所說的那樣在圓括號b的條件下)。