![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
Finalist |
|
||||||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 23.5.2006 Репутация: нет Всего: 1 |
Всех приветствую!
Есть такая таблица с приключениями
Данных в таблице будет не много, примерно 100-200 записей Транзакции не использую, данные меняться будут раз в год.. Таблица предназначена только для чтения и формирования текущих приключений игрока. Поэтому использую MyISAM
Этот запрос дает последний остров на текущей карте текущего акта игры. Таким образом узнаю, что пора менять карту и потом пора менять акт на следующие. explain выдает, что индекс не используется
Если заставить использовать индекс
почему не используется оба индекса, а только Мап? При использовании движка InnoDB используется индекс Мап автоматически, указывать форс не нужно... Если использовать объединенный индекс
все равно база не использует его добровально, а только принудительно... Кто сталкивался? как поступить в этой ситуации? |
||||||||||||
|
|||||||||||||
_zorn_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 21.8.2007 Репутация: 2 Всего: 12 |
Зачем тебе вообще индексы тогда ? |
|||
|
||||
Akina |
|
||||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Для одного условия (связывания или отбора - неважно) может использоваться только ОДИН индекс.
Для показанного запроса оба индекса (и `Act`, и `Map`) скорее всего бесполезны. Они вряд ли высокоселективны (что и показывает их игнорирование), а при селективности менее ~20% сканирование таблицы дешевле использования индекса. В то же время если создать составной индекс по этим полям, например
то он будет высокоселективен (с учётом озвученных данных - менее 1%), и практически наверняка будет использоваться в запросах указанного типа. Кстати, при этом наличие отдельного индекса по полю Act практически потеряет смысл. Для конкретно показанного запроса ещё более выгоден индекс
поскольку он является покрывающим, и для выполнения этого запроса обращения к таблице вообще не требуется. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||
|
|||||
Finalist |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 23.5.2006 Репутация: нет Всего: 1 |
Ну в общем вы подтвердили, что мои опасения напрасны, как и в первом ответе, с малым количеством записей, так и во втором с объединенным индексом.
Меня больше интересовало. почему же база не использует индексы автоматически? |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Сервер (не база) использует индекс только тогда, когда это выгодно. В данном случае это НЕ БЫЛО выгодно - посему индекс не использовался. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MySQL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |