Вопрос об индексах mysql для столбцов с низким и средним количеством элементов - PullRequest
0 голосов
/ 16 марта 2010

У меня есть общий вопрос о том, как работает индексация баз данных, особенно в MySQL. Допустим, у меня есть таблица с миллионом строк со столбцом «ClientID», который относительно равномерно распределен среди 30 значений. Таким образом, в этом столбце очень низкая мощность (30) относительно первичного ключа (1 миллион).

Теперь я понимаю, что вы не должны создавать индексы в полях с низким количеством элементов. Однако в этом случае запросы выполняются только с одним из 30 идентификаторов клиента. Таким образом, не будет ли полезным создание индекса по ClientID, так как пространство поиска автоматически сокращается до 1/30 того, что обычно бывает? Или мое понимание того, как работает индекс, неверно?

Спасибо

1 Ответ

3 голосов
/ 16 марта 2010

То, что я усвоил как очень общее правило из семинаров, спонсируемых MySQL, - это то, что вы получаете НЕКОТОРЫЙ выигрыш в производительности в большинстве случаев, когда мощность сокращает пространство поиска на 80% и более. Похоже, это касается практически любой аппаратной настройки, с которой я столкнулся.

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

В других обстоятельствах правильный ответ на самом деле - «это зависит», и тестирование обычно - путь.

Вы также можете проверить функцию BENCHMARK () в mysql - она ​​не идеальна, но может помочь в тестировании таких вещей: http://dev.mysql.com/doc/refman/5.1/en/information-functions.html#function_benchmark

...