我已經有36402933條記錄的數據庫,但是當我運行下面的簡單查詢,簡單的計數查詢花費太多的時間來執行
select count(user-id)
from (Table)
where time>'2006-04-07 22:59:59'
and time<'2006-04-07 23:59:59 ';
大約需要1分鐘來執行。在Mysql控制檯中。 有沒有更好的方法來快速執行它?
我已經有36402933條記錄的數據庫,但是當我運行下面的簡單查詢,簡單的計數查詢花費太多的時間來執行
select count(user-id)
from (Table)
where time>'2006-04-07 22:59:59'
and time<'2006-04-07 23:59:59 ';
大約需要1分鐘來執行。在Mysql控制檯中。 有沒有更好的方法來快速執行它?
您可以在時間字段上創建索引以加快此查詢速度。但是,如果它是varchar(看起來如此),它將永遠是你的問題。將其轉換爲適當的DateTime類型並創建索引將是最佳解決方案。
varchar!提交者應提供表格 – Pieter21
是的,在時間字段上放置一個索引。
和/或檢查查詢計劃,看看是否帶來了一些建議
的創建架構謝謝先生。這是真的幫助ful –
你可以做幾件事情。
1)確保時間上你的結果
SELECT count(`user-id`)
FROM (Table)
WHERE `time` >'2006-04-07 22:59:59'
AND `time` <'2006-04-07 23:59:59 ';
3)增加由MySQL的用於執行查詢的存儲器索引
2)將有限制。
在他/她的情況下創建用戶ID索引不會有任何區別 – Ravi
SELECT COUNT(user-id)
FROM (Table)
WHERE time BETWEEN '2006-04-07 22:59:59'
AND '2006-04-07 23:59:59';
並且還創建一個時間字段的INDEX。
請顯示錶格的模式,我們可以檢查索引,以及@tanaydin指出的內容,也許你有varchar而不是時間字段 – Pieter21