Индексированный ключ против индексируемых отдельных столбцов, какой из них быстрее? - PullRequest
1 голос
/ 10 марта 2011

В MYSQL с чистой точки зрения производительности, если у меня есть таблица с большим объемом данных с соотношением чтения / записи 10/1. быстрее ли в производительности чтения / записи иметь 4 критерия поиска в отдельных столбцах и все они проиндексированы, или они объединены в одну строку, выступающую в качестве ключа, и сохранены в одном индексированном столбце?

например. скажем, эта таблица с 5 столбцами, именем, фамилией, полом, страной и файлом, где первые четыре столбца ВСЕГДА будут заданы как часть параметров поиска в поиске, или иметь таблицу с двумя столбцами, ключом и файлом. где значение ключа может быть john-smith-male-australia ??

Я не совсем понимаю плюсы и минусы. Я хочу подчеркнуть, что все параметры будут указаны при поиске.

Ответы [ 3 ]

0 голосов
/ 10 марта 2011

тот факт, что все параметры будут заданы при поиске.

В этом конкретном случае, если это конструктивная возможность разбить четыре столбца на пятый (varchar)и индексировать это, а затем пойти на это.Он выравнивает дерево индексов, поэтому ему не нужно идти на 3 ветви глубиной до уровня листьев.Это также позволяет очень быстро разбивать двоичные разделы, чтобы получить нужные данные, , пока составляет точно в order of selectivity.

0 голосов
/ 10 марта 2011

Из моего учебника по индексированию sql .

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

По сути, это то же самое, если вы объединяете столбцы самостоятельно или позволяете БД делать это.Это просто меньше работы, меньше подвержено ошибкам и менее неудобно, если вы позволяете БД делать это.

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

0 голосов
/ 10 марта 2011

Это зависит.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...