2013-04-11 31 views
0

我有一個表:MySQL:更多「哪裏」條件提高速度?

ID | Name | Status 

數以百萬計的條目。如果我做了選擇:

SELECT * from table where ID = 949442 

請問這種查詢可以以任何方式比這更快的一個:

SELECT * from table where ID = 949442 AND status = "OPEN" 

假設此行可能有一個開閉狀態?

+3

您是否嘗試過運行它們? – Taryn 2013-04-11 15:09:57

+1

取決於您的數據結構以及是否存在合適的索引。 – Sirko 2013-04-11 15:10:46

+0

您可能會對ID字段的索引(訪問結構)如此之快,但由於狀態字段中沒有索引,它會稍後過濾由ID字段選定的較慢 – 2013-04-11 15:14:13

回答

4

只需添加更多WHERE條件不會使您的查詢更快速。例如,有時添加一個OR的情況會讓事情變得緩慢。通常,使用AND添加更多條件將使查詢更快,即使僅僅因爲結果集較小,因此需要通過線路傳輸較少的數據。

是什麼使查詢更快的是,當你寫一個匹配的指數WHERE條件:
8.3. Optimization and Indexes

1

如果ID是一個獨特的列(因爲它似乎是),那麼它是不可能的,額外的約束會影響以任何可衡量的方式表現,積極或消極。數據庫引擎已經可以在O(log n)時間內找到該特定行,並且檢查您已經找到的行中列的值是O(1)操作。