MySQL: могу ли я проиндексировать поле даты и времени?MySQL не будет этого делать - PullRequest
1 голос
/ 24 августа 2011
mysql> create index index_questions_on_publishedAt on questions(publishedAt);
ERROR 1317 (70100): Query execution was interrupted
mysql> select count(*) from questions;
+----------+
| count(*) |
+----------+
|   491773 | 
+----------+
1 row in set (1.02 sec)

# Is it even reasonable for this query to take 1 second?

mysql> select count(*) from questions where publishedAt <= '2011-08-23 19:52:01' and publishedAt >= '2011-08-23 19:49:44';
+----------+
| count(*) |
+----------+
|       30 | 
+----------+
1 row in set (0.71 sec)

MySQL info: Server version: 5.1.41-3ubuntu12.10 (Ubuntu)

Большинство моих запросов проверяются на различные временные диапазоны, и содержимое каждого диапазона находится в постоянном движении, поэтому я не могу здесь много кешировать.Терпеливо жду любого совета ... Спасибо.

1 Ответ

2 голосов
/ 24 августа 2011

У меня есть таблица с 725K записями, и вот мои результаты:

  • Перед созданием индекса:
    • Подсчет с условием без индекса: 0,59 секунды
    • Подсчет без условия: 0,8 секунды
  • Создание индекса для поля даты и времени: 2,28 секунды
    • Подсчет с условием: 0,07 секунды

Надеюсь, что ответит на ваш вопрос.

Кажется, создание вашего индекса прерывается кем-то или кем-то, но я бы дважды проверил файлы журналов, чтобы увидеть, что там происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...