powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / MySQL и индексация....
8 сообщений из 8, страница 1 из 1
MySQL и индексация....
    #32188141
AndreyBond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я что то не пойму.... Делаю индекс на поле типа timestamp, в котором хранится время вставки записи вот так:
alter table packets add index (time);
Индекс добовляется.... Потом проверяю этот индекс в работе вот так:
explain select * from packets where time='2003.06.20 10:00:00';
Так у меня в колонке rows показывается что выборка пройдет по всем 8 млн. записям, в колонке possible_keys написано time, в колонке key написано NULL и type ALL. Если же дабавлю индекс к полю id:
alter table packets add index (id); то всё в порядке, то есть проверка:
explain select * from packets where id=32; в колонке rows показывает что выборка пройдёт всего лишь по 300 тыс. записям, в колонке possible_keys написано id, в колонке key написано id и type ref.
В чём трабл???
...
Рейтинг: 0 / 0
MySQL и индексация....
    #32188166
Stellar.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сделай
time NOT NULL
...
Рейтинг: 0 / 0
MySQL и индексация....
    #32188478
AndreyBond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1) Тип timestamp никогда не бывает в значении NULL.
2) Вот тут закономеность обнаружилась странная:
Данные накапливались с 1.06.03
На примере лучше всего:
mysql> explain select sum(ip_totlen) from packets where ts between '2003.06.12 19:51:17' and '2003.06.19';
+---------+------+---------------+------+---------+------+---------+------------+
| table | type | possible_keys | key | key_len | ref | rows | Extra |
+---------+------+---------------+------+---------+------+---------+------------+
| packets | ALL | ts | NULL | NULL | NULL | 8682887 | where used |
+---------+------+---------------+------+---------+------+---------+------------+
1 row in set (0.01 sec)

mysql> explain select sum(ip_totlen) from packets where ts between '2003.06.12 19:51:18' and '2003.06.19';
+---------+-------+---------------+------+---------+------+---------+------------+
| table | type | possible_keys | key | key_len | ref | rows | Extra |
+---------+-------+---------------+------+---------+------+---------+------------+
| packets | range | ts | ts | 4 | NULL | 1482501 | where used |
+---------+-------+---------------+------+---------+------+---------+------------+
1 row in set (0.00 sec)

mysql>

И этот промежуток времени сохраняется на всех записях. То есть, если мы добовляем одну секунду к промежутку, то выборка идёт по всем записям, и соответственно запрос выполняется в два раза дольше.
Почему так???
...
Рейтинг: 0 / 0
MySQL и индексация....
    #32188482
AndreyBond
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И вот ещё какую фразу нашёл в русской документации MySQL в разделе 6.5.7 Синтаксис оператора CREATE INDEX:

"Следует учитывать, что в версии MySQL 3.23.2 и более поздних для таблиц типа MyISAM можно добавлять индекс только для столбцов, которые могут принимать величины NULL или для столбцов BLOB/TEXT".

Как это понимать, что нельзя создать индекс на поле которое not null?
...
Рейтинг: 0 / 0
MySQL и индексация....
    #32188522
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2AndreyBond, посмотрел английский оригинал, там тоже самое! Надо проверять. Выходит что так, но странно!
...
Рейтинг: 0 / 0
MySQL и индексация....
    #32200023
aleksey_24
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет это все фигня ты что то на тупил.
Может у тебя данные в столбце выходят за какой то определенный предел.

Код: plaintext
1.
2.
3.
4.
5.
6.
Всем ПРОГРАММИСТАМ
Всем срочно задавать вопросы на
http://forum.webcommand.ru/
Там тебе ответят!!!
ето как раз новый форум и на нем видимо будут разсматриваться все темы.
Задавай вопросы - тебе ответят!!!
Сделаем форумы какие будут требовать посетители.
...
Рейтинг: 0 / 0
MySQL и индексация....
    #32200040
BigHarry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
explain select * from packets where time='2003-06-20 10:00:00' ?

т.е. вместо точек в дате воткнуть тире ?
...
Рейтинг: 0 / 0
MySQL и индексация....
    #32202456
Programmist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2aleksey_24: А ответы будут такие же грамотные, как твой пост-скриптум? ;)
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / MySQL и индексация....
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]