SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 05.03.2013 20:31:29

Shopen
Гуру
Откуда: Москва
Зарегистрирован: 22.10.2007
Сообщений: 362

ANALYZE TABLE и индексы

Наткнулся на странную какую то проблему.
Добавляю в таблицу индекс (ALTER TABLE ADD INDEX...). Смотрю SHOW INDEX FROM table - cardinality - 1 (один), соответственно индекс не работает в запросах, mysql его просто не использует. Если сделать ANALYZE TABLE - вуаля - cardinality 375000 и все шустро бегает.

Как то это непонятно, почему при создании самого индекса не анализируется его распределение? Таблица readonly, один раз сделалась и только читается. Структура я так понимаю тут не имеет значения, причина в чем то ином, поэтому не привожу её. Есть идеи в чем дело?

Неактивен

 

#2 05.03.2013 20:48:50

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: ANALYZE TABLE и индексы

Странно, должен обновлять статистику при создании. Какая версия MySQL, какой механизм хранения?

Неактивен

 

#3 05.03.2013 21:25:14

Shopen
Гуру
Откуда: Москва
Зарегистрирован: 22.10.2007
Сообщений: 362

Re: ANALYZE TABLE и индексы

mysql  Ver 14.14 Distrib 5.1.50, for Win64 (unknown)

таблицы MyISAM

индексируемое поле объявлено как INT(7)

Отредактированно Shopen (05.03.2013 21:26:32)

Неактивен

 

#4 05.03.2013 22:13:02

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: ANALYZE TABLE и индексы

Выглядит как бага, попробуйте на bugs.mysql.com, если воспроизводимо.

Неактивен

 

#5 15.03.2013 16:17:50

Shopen
Гуру
Откуда: Москва
Зарегистрирован: 22.10.2007
Сообщений: 362

Re: ANALYZE TABLE и индексы

Интересно а можно как то понять - нужно ли обносить статистику или нет?

И вообще, может нубский вопрос - но зачем нужен аналайз? почему, при каких условиях mysql "не знает" распределение индекса? По идее он должен всегда обновлять стату, но ведь аналайз существует тем не менее

Отредактированно Shopen (15.03.2013 16:25:56)

Неактивен

 

#6 15.03.2013 17:57:27

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: ANALYZE TABLE и индексы

ANALYZE делает системно, видимо из-за того, что в реальности статистика обновляется не всегда. Наверное, ряд операций - таких как, массовое удаление и др. обновляют не все статистические показатели из соображений быстродействия. Например, достаточно сложно обновлять cardinality индекса.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson