powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / На подхватываются индексы при LEFT JOIN
4 сообщений из 4, страница 1 из 1
На подхватываются индексы при LEFT JOIN
    #38775675
m1andry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ломаю голову уже целый день.
Столкнулся с 2 проблемами.

1. Индексы не подвязываются, если если есть 2 условия, к примеру:
Код: sql
1.
LEFT JOIN table ON table.id=main.id OR table.id=secondary.id



В интернете вроде говорят, что индекс можно связать лишь один-к-одному, и нельзя одни-ко-многим, так ли это?
Какие костыли придумать, что бы обойти?


2. Есть 3 таблицы (основная, с просмотрами основной, с заметками к основной). Делая выборку
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT a.id

FROM ofs_resolution a 

LEFT JOIN ofs_resolution_bookmark bm 	ON bm.id_resolution=a.id AND bm.id_user=1
LEFT JOIN sys_journal_visit jv 		ON jv.id_user=1 AND jv.id_object=a.id_letter AND jv.page='letter'

GROUP BY a.id
LIMIT 0, 10000


Получаю

При этом это всё индексы: bm.id_resolution и bm.id_user, jv.id_user и jv.id_object и jv.page, a.id_letter
...
Рейтинг: 0 / 0
На подхватываются индексы при LEFT JOIN
    #38775710
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m1andry,

я. перепишите OR как все отдельных запросa
связаных UNION ALL. тогда в каждом запросе подвяжется
(если подойдет) свой индекс
...
Рейтинг: 0 / 0
На подхватываются индексы при LEFT JOIN
    #38775712
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2. в конкретном случае вы можете переписать как

LEFT JOIN table ON table.id IN (main.id,secondary.id)

в текуших версиях (кажется >= 5.5) это будет быстро.
В старых версиях лучше UNION ALL
...
Рейтинг: 0 / 0
На подхватываются индексы при LEFT JOIN
    #38775715
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m1andry,

по поводу второго вопроса про 3 таблицы:

1. когда вы задаете вопрос, то задавайте вопрос.
Что вас собствено не нравится в запросе и плане?

2. БМ таблица у вас имеет 8 записей,
так ни разу не интересно тестировать.
Киньте туда реальные данные.
Если это есть реальные данные, то у вас все хорошо и так.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / На подхватываются индексы при LEFT JOIN
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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