2017-09-18 102 views
0

我已經有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控制檯中。 有沒有更好的方法來快速執行它?

+0

請顯示錶格的模式,我們可以檢查索引,以及@tanaydin指出的內容,也許你有varchar而不是時間字段 – Pieter21

回答

1

您可以在時間字段上創建索引以加快此查詢速度。但是,如果它是varchar(看起來如此),它將永遠是你的問題。將其轉換爲適當的DateTime類型並創建索引將是最佳解決方案。

+0

varchar!提交者應提供表格 – Pieter21

1

是的,在時間字段上放置一個索引。

和/或檢查查詢計劃,看看是否帶來了一些建議

+0

的創建架構謝謝先生。這是真的幫助ful –

1

你可以做幾件事情。

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)將有限制。

+1

在他/她的情況下創建用戶ID索引不會有任何區別 – Ravi

0
SELECT COUNT(user-id) 
FROM (Table) 
WHERE time BETWEEN '2006-04-07 22:59:59' 
AND '2006-04-07 23:59:59'; 

並且還創建一個時間字段的INDEX。