powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как поставитьиндексы на derived tables?
4 сообщений из 4, страница 1 из 1
Как поставитьиндексы на derived tables?
    #33429466
Steven13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такой запрос:
Код: plaintext
1.
2.
SELECT * FROM `nekki-butsa`.res r left outer join
(select * from `nekki-test`.ut_reglaments left outer join `nekki-test`.ut_tournaments  using(TournamentID)) as reg
on r.season=reg.SeasonID and r.type=reg.ShortName and r.tur>=reg.tour1 and r.tur<=reg.tour2 and if(r.reg< 4 , 0 , 4 )=reg.Name_ger


Как поставить на derived tables reg индексы?

Нужен такой индекс: (SeasonID,ShortName,tour1,tour2,Name_ger)

Я обыска всё что мог, но ненашел даже есть ли такая возможность.

_______________________
Пути мои - неисповедимы.
...
Рейтинг: 0 / 0
Как поставитьиндексы на derived tables?
    #33429468
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
имхо, такое возможно только через промежуточную таблицу с последующим созданием по ней индекса.

а нужен ли здесь индекс?
кстати, поля SeasonID,ShortName,tour1,tour2,Name_ger из какой таблицы?
...
Рейтинг: 0 / 0
Как поставитьиндексы на derived tables?
    #33429473
Steven13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShortName
из другой таблицы.

Вот explain, видно что таблицу REG берёт вообще без индексов.


"id""select_type""table""type""possible_keys""key""key_len""ref""rows""Extra"1"PRIMARY""r""ref""type""type""8""const"96162"Using where; Using temporary; Using filesort"1"PRIMARY""<derived2>""ALL""NULL""NULL""NULL""NULL"26""2"DERIVED""ut_reglaments""ALL""NULL""NULL""NULL""NULL"26""2"DERIVED""ut_tournaments""eq_ref""PRIMARY""PRIMARY""4""ut_reglaments.TournamentID"1""


Через временную неинтересно. Такой запрос в самый раз.Просто хочется его ускорить.

____________________
Пути мои - неисповедимы.
...
Рейтинг: 0 / 0
Как поставитьиндексы на derived tables?
    #33429498
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно, что-то получится, если попробовать соединять таблицы в другом порядке. Тогда может сыграть индекс по какой-либо из таблиц, например, ut_reglaments (разумеется, если его создать).
Я бы начал соединение с тех таблиц, которые дают меньше записей в результат.

Еще я бы попробовал
Код: plaintext
if(r.reg< 4 , 0 , 4 )=reg.Name_ger
заменить на
Код: plaintext
(r.reg< 4  AND reg.Name_ger= 0 ) OR (r.reg>= 4  AND reg.Name_ger= 4 )
хотя, не уверен, что это что-то существенно изменит.
но если будут подходящие индексы (например, по полю r.reg), то возможно...

и прежний вопрос остается в силе:
поля SeasonID,ShortName,tour1,tour2,Name_ger из какой таблицы? ut_reglaments или ut_tournaments?

и смущает, что индекс по таблице `nekki-butsa`.res такой короткий... там явно не все искомые поля...
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как поставитьиндексы на derived tables?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]