[英]best way to query ranges in mysql
我正在設計一個查詢,該查詢根據表示為范圍(特別是年份)的參數從大表中提取行。 在某些情況下,我希望根據 3 個特定值提取行(例如,提取客戶編號為 #001、#002 和 #003 的客戶記錄)。
對於范圍問題,我想知道 WHERE 語句背后的條件語法是否比其他語句運行得更快:
在()
之間()
high.range >= 數據 >=low.range
對於 IN() 選項,我可以編寫一個腳本,將年份轉換為從 low.range 到 high.range 的年份列表。 因此,對於 2000 到 2004 的范圍,它將是 IN('2000','2001','2002','2003','2004')。 這將是 MySQL 之外的額外編程步驟,但這對我來說並不難。
我意識到我可以做其他事情來加快速度(比如使用聚集索引),但我只是想看看在 WHERE 語句之后使用的 sql 語法是否有任何區別。
編輯:對不起,我可能誤解了你的問題。
我相信between
這種情況下是更合適的 function 到in
,但我會進行一些基准測試來確定。
如果您使用的是 TIMESTAMP、DATE 或 DATETIME 列,則可以使用year
:
where year(column) > 2000 or year(column) < 2005
還有 for month
、 week
和day
函數。
作品之間的幕后就像 high.range >= data >=low.range
In(condition1, condition2, condition3) 就像 (condition1 or condition2 or condition3)
如果日期數大於 1 或 2,我希望 between 工作得更快。
它類似於 (1000 > 1001) 與 (1000 = 998 或 1000 = 996 或 1000 = 995 等)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.