Задавайте вопросы, мы ответим
Вы не зашли.
Наткнулся на странную какую то проблему.
Добавляю в таблицу индекс (ALTER TABLE ADD INDEX...). Смотрю SHOW INDEX FROM table - cardinality - 1 (один), соответственно индекс не работает в запросах, mysql его просто не использует. Если сделать ANALYZE TABLE - вуаля - cardinality 375000 и все шустро бегает.
Как то это непонятно, почему при создании самого индекса не анализируется его распределение? Таблица readonly, один раз сделалась и только читается. Структура я так понимаю тут не имеет значения, причина в чем то ином, поэтому не привожу её. Есть идеи в чем дело?
Неактивен
Странно, должен обновлять статистику при создании. Какая версия MySQL, какой механизм хранения?
Неактивен
mysql Ver 14.14 Distrib 5.1.50, for Win64 (unknown)
таблицы MyISAM
индексируемое поле объявлено как INT(7)
Отредактированно Shopen (05.03.2013 21:26:32)
Неактивен
Выглядит как бага, попробуйте на bugs.mysql.com, если воспроизводимо.
Неактивен
Интересно а можно как то понять - нужно ли обносить статистику или нет?
И вообще, может нубский вопрос - но зачем нужен аналайз? почему, при каких условиях mysql "не знает" распределение индекса? По идее он должен всегда обновлять стату, но ведь аналайз существует тем не менее
Отредактированно Shopen (15.03.2013 16:25:56)
Неактивен
ANALYZE делает системно, видимо из-за того, что в реальности статистика обновляется не всегда. Наверное, ряд операций - таких как, массовое удаление и др. обновляют не все статистические показатели из соображений быстродействия. Например, достаточно сложно обновлять cardinality индекса.
Неактивен