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

1 23
S
На сайте с 30.09.2016
Offline
469
#21
Chukcha:
Запрос отработал некорректно.

А что значит "некорректно"? Просто интересно, что будет, если условие выборки захреначить в ON вместо WHERE.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
D
На сайте с 28.06.2008
Offline
1108
#22
Chukcha:
Я не знаю, почему
Но это запрос не должен работать!!!!
Может вы неверно его показываете?

Все работает - с INNER JOIN 4 сек, с LEFT JOIN - 0,005 = быстрее в 800 раз !!! :))) и это не кеш, я проверил добавляя SQL_NO_CACHE

jpg 166896.jpg
jpg 2.jpg
C
На сайте с 04.02.2005
Offline
291
#23
Sitealert:
А что значит "некорректно"?

SELECT p.product_id, pd.name

FROM oc_product_description pd
LEFT JOIN oc_product p ON p.product_id = pd.product_id
AND pd.language_id =1

13,698 всего

 product_id 	name

35 Product 8
48 iPod Classic
NULL iPhone
28 HTC Touch HD
44 MacBook Air
45 MacBook Pro
29 Palm Treo Pro
36 iPod Nano
46 Sony VAIO
47 HP LP3065
32 iPod Touch
41 iMac
33 Samsung SyncMaster 941BW
34 iPod Shuffle
43 MacBook
31 Nikon D300
49 Samsung Galaxy Tab 10.1
42 Apple Cinema 30"
30 Canon EOS 5D
NULL Product 8

SELECT COUNT( product_id )

FROM oc_product_description pd

COUNT(product_id)

13698

SELECT p.product_id, pd.name

FROM oc_product p
JOIN oc_product_description pd ON p.product_id = pd.product_id
AND pd.language_id =1

4,566 всего

SELECT COUNT(*) FROM oc_product p

COUNT(*)

4566
S
На сайте с 30.09.2016
Offline
469
#24
Dram:
Все работает - с INNER JOIN 4 сек, с LEFT JOIN - 0,005

Chukcha по-видимому имеет в виду, что некорректно впихивать условие выборки по таблице t1 в условие присоединения совсем другой таблицы. Условие AND t1.object_group = 'com_group' должно быть в WHERE. Где-то этот косяк может криво вылезть.

1 23

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