Можно ли индексировать поле, которое постоянно изменяется, или постоянная запись снизит производительность? - PullRequest
1 голос
/ 02 марта 2011

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

Таблица структурирована следующим образом:

ProductID - INT - UNSIGNED - NOT NULL - AUTO INCREMENT - PRIMARY KEY
ProductName - VARCHAR(64) - NOT NULL
ProductViews - INT - UNSIGNED - NOT NULL

Единственными полями, которые используются в предложениях WHERE, является ProductID. Единственное поле, которое используется в ORDER BY, это ProductViews.

Таблица довольно большая, поэтому обычный запрос (при соединении с другой таблицей) может занять некоторое время. Запуск EXPLAIN для типичного запроса показывает, что из-за поля ProductViews MySQL отображает «Extra: Using where; Using filesort»

Я хотел бы проиндексировать ProductViews, чтобы избавиться от сортировки файлов, однако значение в поле увеличивается на 1 при каждом посещении страницы.

Можно ли индексировать поле, которое постоянно изменяется, или постоянная запись снизит производительность? Это ситуация, когда я не могу много сделать, и мне приходится мириться с проблемой сортировки файлов?

1 Ответ

2 голосов
/ 02 марта 2011

Вы спрашиваете, перевешивает ли польза индекса стоимость.Я бы сказал, что сортировка файлов настолько дорогая, что здесь стоит использовать индекс.

Но единственный реальный ответ можно найти путем измерения.Установите критерии (например, скорость загрузки веб-страницы) и измерьте ее с индексом и без него.

...