Индексирование даты и времени в Mysql - PullRequest
4 голосов
/ 24 декабря 2010

Вот таблица

+------------+----------+------+-----+---------+-------+
| Field      | Type     | Null | Key | Default | Extra |
+------------+----------+------+-----+---------+-------+
| datecolumn | datetime | YES  | MUL | NULL    |       |
+------------+----------+------+-----+---------+-------+

Данные в таблице

+---------------------+
| datecolumn          |
+---------------------+
| 2007-01-01 00:00:00 |
| 2007-01-03 00:00:00 |
| 2008-01-03 00:00:00 |
| 2009-01-03 00:00:00 |
| 2010-01-01 00:00:00 |
| 2010-01-02 00:00:00 |
| 2010-01-03 00:00:00 |
+---------------------+



EXPLAIN select * from test_date_index use key (datecolumn) where datecolumn>='2010-01-02 00:00:00';
+----+-------------+-----------------+-------+---------------+------------+---------+------+------+--------------------------+
| id | select_type | table           | type  | possible_keys | key        | key_len | ref  | rows | Extra                    |
+----+-------------+-----------------+-------+---------------+------------+---------+------+------+--------------------------+
|  1 | SIMPLE      | test_date_index | index | datecolumn    | datecolumn |  9     | NULL |    7 | Using where; Using index |
+----+-------------+-----------------+-------+---------------+------------+---------+------+------+--------------------------+
1 row in set (0.00 sec)

Почему MySQL использует 7 строк для восстановления 1 строки?

Заранее спасибо!

1 Ответ

4 голосов
/ 24 декабря 2010

Он использует индекс.

Он (скорее всего) не использует доступ к диапазону, поскольку в таблице так мало записей, что поиск первой записи диапазона на самом деле дороже, чем простообход индекса и фильтрация значений.

Когда вы добавляете больше значений в таблицу, применяется доступ к диапазону (поскольку теперь он считается более дешевым), а COUNT показывает 1, поскольку у вас есть только одна записьудовлетворяющее условию.

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