2016-06-23 2 views
1

Предположим, у меня есть таблица MySQL (InnoDB), как этотМогу ли я заставить MySQL индексировать определенные значения?

CREATE TABLE Item (id INT, ..., score INT, INDEX (score)); 

Из-логики приложения, все начинается со счетом 1, вскоре после этого каждый элемент будет получить другой счет (с относительно небольшим числом столкновений после так что индекс не-1 значений должен быть достаточно сбалансированным).

Это таблица с частотами записи. Я обеспокоен тем, что по мере того, как база данных масштабируется, индекс будет обманут, в частности, ведром предметов с score=1. Я не понимаю полных последствий в отношении фрагментации и кластеризации, и я не могу проверить это правильно, пока не на на самом деле увеличит аппаратное обеспечение.

Есть ли способ сказать MySQL не вставлять записи в индекс для данного заданного значения?

Запросов никогда не было с WHERE score=1, самым сложным запросом будет SELECT ... WHERE score>lower_limit ORDER BY score.

ответ

0

Вы хотите использовать Filtered Indexes or Partial Indexes. К сожалению, there's no such an option in MySQL.

Если бы я должен был сделать это, я хотел бы создать вторую таблицу с именем Item_score с индексом на счет и содержащий только товары со значением выше, чем 1.

Смежные вопросы