2011-01-19 4 views
0

У меня есть таблица с 8 столбцов со смешанными типами данных (междунар, текст, VARCHAR, и т.д ..)правила индексации ограниченное использование таблицы - MySQL

Эта таблица имеет только один запрос, который работает на нем (а ВЫБРАТЬ) , и в рамках этого запроса он использует 4 "И" утверждения для фильтрации результатов.

Мой вопрос: каковы некоторые рекомендации по индексированию в этой ситуации?

В моем случае время чтения имеет более высокий приоритет, чем время записи, поэтому я должен индексировать все столбцы, которые появляются в предложении И? Должен ли я индексировать только целые числа?

ответ

2

Для одного запроса создайте индекс со всеми затронутыми столбцами.

индексы MySQL работают слева направо, а это означает, что если у вас есть таблица со столбцами:

A varchar(255) 
B varchar(50) 
C int(11) 
D datetime 

Индекс по KEY index (A,B,C,D) означает, что MySQL будет искать для столбцов в запросе, слева направо , Если вы включите их все в свой запрос, они будут использовать их все, но если вы включите только A и B, они будут использовать их для фильтрации результатов, прежде чем применять остальные условия к оставшемуся набору результатов (при условии, что вы используете AND).

Однако, если вы указали только C и D, он не будет использовать этот индекс вообще, так как он не знает, что искать в A.

0

Я думаю, вы должны создать индекс для каждого столбца, который вам нужен для ваших предложений. Обратите внимание, что в mysql существует ограничение в длине поля, вы создаете индекс. Созданный индекс не может превышать 1000 байтов для MyISAM и 767 для InnoDb (thx OMG Ponies). Here you can find an discussion about assessment of the size of the index for varchars column. Если у вас нет записей, это должно значительно повысить производительность отдельных операторов.

+0

Существует ограничение на пространство для создания индексов, но это зависит от двигателя - MyISAM 1000, InnoDB - 767 ... –

2

Если вы быстро просмотрите how MySQL uses its indexes, вы должны иметь возможность разрабатывать лучшие столбцы для индексации.

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