Я новичок в оптимизации запросов к базе данных. Вот создания таблицы запроса:10 миллионов строк, занимающих 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