我在一個MySQL表table
以下數據:如何優化MySQL查詢 'SELECT * from表WHERE日期= CURDATE()和ID = 1;'
ID
:INT(11)[這就是主鍵]
Date
:日期
和我運行MySQL查詢:
SELECT * from table WHERE Date=CURDATE() and ID=1;
這需要0.6至1.2秒之間秒。
有沒有什麼辦法來優化這個查詢來獲得更快的結果?
我的目標是找出我是否已經有了這個ID
今天的記錄。
我在一個MySQL表table
以下數據:如何優化MySQL查詢 'SELECT * from表WHERE日期= CURDATE()和ID = 1;'
ID
:INT(11)[這就是主鍵]
Date
:日期
和我運行MySQL查詢:
SELECT * from table WHERE Date=CURDATE() and ID=1;
這需要0.6至1.2秒之間秒。
有沒有什麼辦法來優化這個查詢來獲得更快的結果?
我的目標是找出我是否已經有了這個ID
今天的記錄。
在ID
和Date
上添加索引。
你可以在末尾添加一個limit 1
,因爲你正在尋找一個主鍵的最大結果是1
如果你只想知道閹存不存在,你可以用ID
更換*
只選擇ID。
此外,如果你還沒有,你真的需要添加索引。
謝謝@gnur;已經添加了限制1和選擇「ID」將其降低了50%。我也會研究索引。 – tucson 2011-05-26 09:42:56
SET @cur_date = CURDATE()
... WHERE日期= @cur_date ...
,然後創建日期的指標,ID(順序很重要,它應該符合你秩序查詢)。
通常,在執行查詢並將它們存儲到變量之前調用函數可讓SQL將它們視爲數字而不是函數,這可以使其使用更快的查詢算法。
你是說ID不是唯一的嗎?你的桌子上有主鍵嗎?要優化任何查詢,您應該在查詢的WHERE部分中使用的任何字段上編制索引。 (在這種情況下,「Date」和「ID」) – gnur 2011-05-26 09:18:57
爲每個column創建索引,或爲id創建主索引。 – nunu 2011-05-26 09:19:19
@gnur是的,'ID'是主鍵。 – tucson 2011-05-26 09:29:46