2017-03-09 56 views
1

假設我有一個查詢相同的限制,SQL查詢與BETWEEN

SELECT * FROM tab1 WHERE col1 BETWEEN 111 AND 111; 

或查詢

SELECT * FROM tab1 WHERE col1=111; 

有兩個之間的性能有什麼區別?

表格可能很大,並且會被查詢很多次。

編輯:查詢可以有多達15個字段在WHERE子句中像col1。此外,列始終是主鍵的一部分。

+0

什麼是表索引列? –

+0

第二個查詢也許稍微快一點。可衡量與否? – jarlh

+0

我不希望有太大的區別 - 如果有的話。但是,當你可以使用'='時,爲什麼要使用'BETWEEN'? –

回答

2

我會認真地懷疑這兩個查詢在寫入時會有任何明顯的區別。確實有兩種情況:

  • 沒有索引col1。兩者都會進行全表掃描。第二個(很有可能)會爲between做兩個比較而不是一個比較。這不應該引人注目。
  • 索引col1。兩者都會使用索引。

更有趣的情況是:

WHERE col1 BETWEEN 111 AND 111 AND col2 > 0 
WHERE col1 = 111 AND col2 > 0 

第二個可以充分利用的指標對(col1, col2)。第二個可能不會。 DB2可能會檢測到這種情況,其中between的限制是相同的。通常,between被視爲一個不等式來確定索引。