LEFT JOIN быстрее INNER JOIN?

123
D
На сайте с 28.06.2008
Offline
1101
#11
Chukcha:
FROM table1 AS t1
INNER JOIN table2 AS t2 ON t1.object_id = t2.id'

4,5 сек

Chukcha:
FROM table2 AS t2
INNER JOIN table1 AS t1 ON t1.object_id = t2.id' AND t1.object_group = 'com_group'

6,02 сек

:)) фиг его знает но пока рекордсмен с тремя LEFT с фантастическими 0.005

C
На сайте с 04.02.2005
Offline
277
#12

очень странное поведение

даже по explain

во втором случае выбрано всего три строки

Поиметь бы дамп...

B
На сайте с 13.02.2008
Offline
262
#13

Dram, вам же eXPLAIN все разъясняет, где проблема. Проблема в сортировке (ORDER BY). В первом варианте для сортировки не используется индекс, а используется временная таблица и файловая система. Поэтому и тормоза.

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#14
borisd:
Dram, вам же eXPLAIN все разъясняет, где проблема. Проблема в сортировке (ORDER BY). В первом варианте для сортировки не используется индекс, а используется временная таблица и файловая система. Поэтому и тормоза.

И ч0? форсировать примари индекс?

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
B
На сайте с 13.02.2008
Offline
262
#15
LEOnidUKG:
И ч0?

Да ни ч0 :). Разбираться с сортировкой надо, чтобы она индекс задействовала.

C
На сайте с 04.02.2005
Offline
277
#16

Да причем здесь сортировка, если второй запрос просто дикий


SELECT
t1.id, t1.created,
t1.description,
t2.title,
CONCAT_WS('-', t2.id, t2.alias) AS item_alias,
CONCAT_WS('-', t3.id, t3.alias) AS category_alias,
CONCAT_WS('-', t4.id, t4.alias) AS section_alias
FROM
table1 AS t1
LEFT JOIN
table2 AS t2 ON t1.object_id = t2.id AND t1.object_group = 'com_group'
LEFT JOIN
table3 AS t3 ON t2.category_id = t3.id
LEFT JOIN
table4 AS t4 ON t2.section_id = t4.id
ORDER BY t1.id DESC LIMIT 3;

А именно

table2 AS t2 ON t1.object_id = t2.id AND t1.object_group = 'com_group'

Я попытался сэмулировать запрос на своих тестовых данных

У меня такая хрень получилась...

D
На сайте с 28.06.2008
Offline
1101
#17
Chukcha:
table2 AS t2 ON t1.object_id = t2.id AND t1.object_group = 'com_group'

насколько я понимаю это (com_group) выбирает из огромной таблицы комментов (на 300.000) записей, комменты для конкретного раздела сайта

C
На сайте с 04.02.2005
Offline
277
#18

Я мог бы понять это в секции WHERE, но в LEFT JOIN не понимаю

Если вам не сложно, дайте дамп этих таблиц

D
На сайте с 28.06.2008
Offline
1101
#19
Chukcha:
Я мог бы понять это в секции WHERE, но в LEFT JOIN не понимаю

Если вам не сложно, дайте дамп этих таблиц

К сожалению это основной актив и контент сайта, сори.... Да и как бы сейчас меня все устраивает - я не понимаю механизм - почему LEFT быстрее INNER именно в этом случае, но я получил ускорение с 4 сек. до 0,05 а результат запрос не изменился.

В общем все супер :))

C
На сайте с 04.02.2005
Offline
277
#20

Я не знаю, почему

Но это запрос не должен работать!!!!

Может вы неверно его показываете?

Вот я пытался на своих данных


SELECT * FROM product p
JOIN pdroduct_description ON p.product_id = pd.product_id AND pd.langugae_id = 1

Это корректный запрос


SELECT * FROM product_description pd
LEFT JOIN product ON p.product_id = pd.product_id AND pd.langugae_id = 1

Запрос отработал некорректно. А ведь очень похож на ваш

123

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий