我是數據庫查詢優化的新手。 下面是創建表查詢:1000萬行花費3.50秒進行簡單類型查詢
CREATE TABLE mo (
id int UNSIGNED NOT NULL auto_increment,
msisdn varchar(20) NOT NULL,
operatorid int UNSIGNED NOT NULL,
shortcodeid int UNSIGNED NOT NULL,
text varchar(100) NOT NULL,
auth_token varchar(60) NOT NULL,
created_at DATETIME,
PRIMARY KEY(id)
);
我的查詢是這樣的:
SELECT count(id) as mo_count from mo where created_at > DATE_SUB(NOW(), INTERVAL 15 MINUTE)
當我測試的結果是
Time taken for tests: 3.50 seconds
[0] => Array
(
[id] => 1
[select_type] => SIMPLE
[table] => mo
[type] => ALL
[possible_keys] =>
[key] =>
[key_len] =>
[ref] =>
[rows] => 10000255
[Extra] => Using where
)
請教我如何優化這個查詢。非常感謝。
如果此表繼續增長,並且您經常查詢計數,您可能會對新設計感興趣。例如,你可以將最後的記錄保存在一個非常小的「總是新鮮的」表格中。同時,將會有一個包含所有記錄的「歷史」表。您也可以在特定的時間段(天?)中擺弄和分區表,以便限制每個計數查詢的IO。 – Sebas