,我有以下形式的SQL表:檢查是否在MySQL表中的兩列相等太慢
| DateID | StartDate | EndDate | a lot more columns...
|--------|-----------|----------|----------------------
| 1 |2017-02-09 |2017-02-16| ...
| 2 |2017-02-10 | NULL | ...
| 3 |2017-02-08 |2017-02-08| ...
我經常遇到像Querys:
SELECT * FROM Dates
WHERE (EndDate IS NULL AND StartDate<='some date') OR
(StartDate=EndDate AND StartDate>='some date' AND (other conditions))
因爲表包含幾個千條記錄,這個查詢相當慢。有沒有辦法加快這一點?例如,使用僅包含具有相同StartDate和EndDate的日期的視圖? StartDate和EndDate已被定義爲索引,但這對我猜測的「StartDate = EndDate」部分沒有幫助。
在此先感謝! :)
嘗試創建2個querys避免'或' – SacrumDeus
性能問題應該包括'EXPLAIN ANALYZE'和有關表的大小,指數,當前時間的一些信息表現,慾望時間等。「慢」是一個相對術語,我們需要真正的價值來比較。 \t \t [** MySQL **](http://dba.stackexchange.com/questions/15371/how-do-i-get-the-execution-plan-for-a-view) –
MySQL index [ ** TIPS **](http://mysql.rjweb.org/doc.php/index_cookbook_mysql) –