Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Добрый день!
Почему-то в одном из индексов (`user_id`) слишком много уникальных значений, хотя реально их 33.
Надо из-за этого беспокоиться?
Неактивен
Это может приводить к выбору неоптимального порядка исполнения запросов JOIN. Попробуйте
Неактивен
Отредактированно Kot666 (03.01.2022 20:11:37)
Неактивен
А какая версия MySQL? Если таблица относительно небольшая, можно перестроить индексы такой командой:
Неактивен
Отредактированно Kot666 (03.01.2022 22:03:59)
Неактивен
Возможно, Вы попали на багу алгоритма оценки Cardinality. Баги такого типа уже были. Если можете изготовить дамп, на котором проблема воспроизводится, то можно сообщить о баге на https://bugs.mysql.com
Это именно бага MyISAM? Изменится ли поведение, если заменить ENGINE на InnoDB?
Неактивен
rgbeast написал:
Возможно, Вы попали на багу алгоритма оценки Cardinality. Баги такого типа уже были.
Да, именно. Я прочёл про этот баг, поднял ВМ, установил MariaDB 10.3, импортировал базу, изменил "engine" на "Aria".
Проблема осталась. Написал сюда.
Неактивен
Действительно стало "получше", но не точно. При обратной конвертации всё вернулось.
Отредактированно Kot666 (04.01.2022 03:43:12)
Неактивен
Cardinality в статистике индексов - оценочное значение. Точный расчет занимал бы время при каждом апдейте таблицы, поэтому нормой считается правильное по порядку величины значение. Значение в MyISAM отличается на 3-4 порядка, поэтому такое поведение нужно считать багой.
Неактивен
Меня беспокоит, не деградирует ли от этого скорость выборок.
Из первого поста:
Неактивен
Статистика индексов влияет только на план исполнения. Когда план выбран, скорость исполнения не должна зависеть от статистики.
А какой именно запрос стал быстрее работать? Странно, что скорость исполнения изменилась, а план тот же.
Неактивен
rgbeast
К сожалению не смог воспроизвести, удаляя/добавляя индексы, а "slow"-log уже стёрся. Точно не могу сказать и не хочу случайно обмануть.
Если смогу воспроизвести, то обязательно напишу.
Неактивен
Страниц: 1