|
|
|
join+left join оптимизатор 2.5
|
|||
|---|---|---|---|
|
#18+
Приветствую, коллеги. Есть, если очень схематично, вот такой запрос: Код: sql 1. 2. 3. 4. 5. 6. работает мгновенно. Если сделать вот такой копипаст: Код: sql 1. 2. 3. 4. 5. 6. то оптимизатору сносит башню, "мгновенно" легким движением руки становится "тормозом". Обычно стараюсь избегать конструкций типа сначала лефт, потом иннер,но тут уж очень сильно бросилась в глаза "декларативность" языка SQL. под псевдонимом v прячется довольно витиеватся вьюшка, может она виновата? СтОит пытаться сделать тесткэйз? У меня в голове со времен царя гороха сидит, что так делать не надо, а вот почему уже не помню, вроде бы известная "особенность реализации". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2013, 16:28:08 |
|
||
|
join+left join оптимизатор 2.5
|
|||
|---|---|---|---|
|
#18+
Ivan_Pisarevsky, насколько я в курсе, left/right join выполняются последовательно, в порядке их перечисления (в отличие от целиком явного или неявного inner join), поэтому располагать таблицы в таком джойне надо от меньшей к большей (по размеру). Так что в данном случае от перестановки мест слагаемых результат хоть и не меняется, но вот последовательность действий может быть тяжелой для сервера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2013, 16:31:44 |
|
||
|
join+left join оптимизатор 2.5
|
|||
|---|---|---|---|
|
#18+
Ivan_Pisarevsky, замечал такое за оптимизатором не один раз. Поэтому взял за правило сначала располагать inner join, и только потом left join. right join не пользуюсь вообще всегда привожу к left join. Хотя по идее оптимизатор мог бы догадаться переставить порядок соединения таблиц если это возможно. P.S. Надо бы вечерком на тройке глянуть может это уже изменили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2013, 16:48:55 |
|
||
|
join+left join оптимизатор 2.5
|
|||
|---|---|---|---|
|
#18+
в тройке тоже самое Код: sql 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Код: sql 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2013, 20:20:52 |
|
||
|
join+left join оптимизатор 2.5
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.10.2013, 20:24:28 |
|
||
|
join+left join оптимизатор 2.5
|
|||
|---|---|---|---|
|
#18+
Симонов Денистикет на эту тему уже естьЗначит память мне не изменила насчет известности, только вот точно вспомнить не смог. :) Ну что ж будем ходить по проторенной тропке, сначала иннеры, потом лефты. Этот запрос довольно изощренно формируется с клиента динамически, кусок: Код: sql 1. 2. 3. Присутствует всегда, а вот иннеры идут (или не идут) в зависимости от режима фильтров, как юзер пожелает, вот я их не глядя и привесил в хвост, а оно "рраз и кирдык". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2013, 12:44:49 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38414155&tid=1564276]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
260ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 531ms |

| 0 / 0 |
