Добавить индекс по столбцу или нет? - PullRequest
1 голос
/ 23 августа 2009

У меня есть таблица, похожая на эту:

CREATE TABLE `item` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(255),
`my_number` int(10) unsigned default NULL
);

Существуют сотни тысяч предметов, и я обычно заказываю их по 'my_number'.

Увеличит ли добавление индекса my_number производительность при запросах по этому полю?

Я использую MySQL, таблица InnoDB.

1 Ответ

6 голосов
/ 23 августа 2009

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

Вы не должны доверять моим или чужим знаниям, если альтернативой являются конкретные данные, которые вы можете собрать самостоятельно. Мера, не угадай!

Ответ, между прочим, таков: «Так и должно быть, если только ваша СУБД не является действительно умопомрачительной». Как правило, добавление индексов увеличивает скорость выбора, но замедляет вставки и обновления. Но я имею в виду"в общем" - это не всегда так. Хороший администратор баз данных постоянно проверяет производительность СУБД и настраивает ее при необходимости. Базы данных не являются объектами, которые устанавливают и забывают, о них нужно заботиться и заботиться: -)

...