LINUX.ORG.RU
ФорумAdmin

mysql и странности с индексами...


0

0

Есть таблица:
+--------------+----------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+----------------------+------+-----+---------+-------+
| ts | timestamp(14) | YES | MUL | NULL | |
| ip_saddr | int(10) unsigned | YES | | NULL | |
| ip_daddr | int(10) unsigned | YES | | NULL | |
+--------------+----------------------+------+-----+---------+-------+

Если делаем:
explain select * from packets where ts between '2004.06.03' and '2004.06.04 20:25:25';

Получаем такое:
+---------+-------+---------------+------+---------+------+----------+---------- --+
| table | type | possible_keys | key | key_len | ref | rows | Extra |
+---------+-------+---------------+------+---------+------+----------+---------- --+
| packets | range | ts | ts | 4 | NULL | 18493325 | where used |
+---------+-------+---------------+------+---------+------+----------+---------- --+


Если же делаем так (в промежуток добовляем одну скунду):
explain select * from packets where ts between '2004.06.03' and '2004.06.04 20:25:26';

То видим такое:
+---------+------+---------------+------+---------+------+-----------+---------- --+
| table | type | possible_keys | key | key_len | ref | rows | Extra |
+---------+------+---------------+------+---------+------+-----------+---------- --+
| packets | ALL | ts | NULL | NULL | NULL | 108317512 | where used |
+---------+------+---------------+------+---------+------+-----------+---------- --+

То есть индекс уже не используется, если же подождать ещё некоторое время, когда накопятся данные, то этот промежуток использования индекса увеличивается ещё на секунду и т.д. Я конечно читал что если выборка идёт более чем по 30 процентам всех данных, то просматривается вся таблица, но тут даже и 15 процентов нет, в чём может быть дело???

Спасибо!!!

anonymous

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.