|
|
|
| 1. Насколько я понял, индексы позволяют ускорить выполнение запросов с предикатами, но лишь в тех случаях, если индексные поля участвуют в условии запроса. Т. е. если в проекте я произвожу выборки не только по полям с первичными ключами, но и по полям с внешними ключами, а также по обычным полям, которые не используются для создания отношений, то все эти поля следует обозначать как индексы, дабы ускорить время выполнения запроса?
2. А если индекс составной, например из двух полей, а в условии используется только одно поле из этого индекса, то становится ли MySQL от этого легче?
3. Если в поиске использую оператор LIKE - какой тип индекса применять к полю? Ведь полнотекстовой индекс используется в связке с MATCH...AGAINST, а обычный индекс берет первые n символов.
4. Участвуют ли индексы в сортировке? И что в таком случае с составными индексами (по аналогии с пунктом 2).
5. Количество индексов для таблицы ограничено, а если много полей и индексов больше 16 - что делать? Дробить таблицу или не заморачиваться с оптимизацией? | |
|
|
|
|
|
|
|
для: iv4art
(18.02.2012 в 19:04)
| | 1. Да, если вы хотите ускорить SELECT-запросы, индексы замедляют UPDATE/DELETE/INSERT-запросы. | |
|
|
|
|
|
|
|
для: iv4art
(18.02.2012 в 19:04)
| | 2. Да может использовать только первое поле, однако, составные поля обычно используют для ускорения сложных условий... например у вас в WHERE-конструкции используется два поля, вы можете создать индекс на этих двух полях, чтобы ускорить запрос. В противном случае если индекс не подойдет (например, он лишь по одному из полей) будет полный скан таблицы. | |
|
|
|
|
|
|
|
для: iv4art
(18.02.2012 в 19:04)
| | 3. Это зависит от типа поля
4. Индексы сами по себе отсортированы. В пункте 2 не верное утверждение
5. Вы действительно хотите использовать 16 индексов? Как правило, такое их количество говорит о том, что разработчик не совсем понимает что из себя представляют индексы и не очень отслеживает реальную эффективность, которую они привносят. Индексы следует применять очень аккуратно, если у вас в таблице их больше трех, подумайте над своей базой данных и таблицей еще раз. | |
|
|
|
|
|
|
|
для: cheops
(18.02.2012 в 19:21)
| | К сожалению только недавно начал разбираться в этой теме, до этого использовал только Primary. Пока сочинял ответ понял, что много индексов и правда скорее всего не будет, как ни крути. Спасибо. | |
|
|
|