SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 16.12.2011 14:43:40

chubbchubbs
Участник
Зарегистрирован: 16.12.2011
Сообщений: 1

Оптимизация запроса и explain

Есть 2 варианта запроса, выполняющих одну и ту же выборку:
1)
SELECT `b_iblock_element_prop_s20`.`IBLOCK_ELEMENT_ID` AS `id`
FROM `b_iblock_element_prop_s20`
LEFT JOIN `b_iblock_element` ON `b_iblock_element`.`ID` = `b_iblock_element_prop_s20`.`IBLOCK_ELEMENT_ID`
WHERE `b_iblock_element`.`WF_PARENT_ELEMENT_ID` IS NULL
AND `b_iblock_element`.`IBLOCK_ID` =20
AND `b_iblock_element_prop_s20`.`PROPERTY_81` = 48
2)
SELECT `b_iblock_element_prop_s20`.`IBLOCK_ELEMENT_ID` AS `id`
FROM `b_iblock_element`
LEFT JOIN `b_iblock_element_prop_s20` ON `b_iblock_element`.`ID` = `b_iblock_element_prop_s20`.`IBLOCK_ELEMENT_ID`
WHERE `b_iblock_element`.`WF_PARENT_ELEMENT_ID` IS NULL
AND `b_iblock_element`.`IBLOCK_ID` =20
AND `b_iblock_element_prop_s20`.`PROPERTY_81` =48

На мой взгляд первый вариант должен оказаться быстрее. Делаю explain...
Результат:
1)http://h1964807.stratoserver.net/files/share/16_12_2011/hLpYRediFEGLuaFDFHDIdQ.jpg
2)http://h1964807.stratoserver.net/files/share/16_12_2011/VK29BNJCBUCFsMszXPKzVQ.jpg

Подтверждаю свой прогноз т.к. вторым запросом mysql нужно проанализировать аж 21993 строки, причем тип связывания all...

Но на деле скорость выполнения запросов:
1)6.5-7 секунд
2)0.2 -0.3 секунды

Подскажите, в чем подвох? Где дырка в логике?

Неактивен

 

#2 16.12.2011 19:10:03

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Оптимизация запроса и explain

По-моему, вы перепутали соотношение запросов и explain.
У вас второй explain
2)http://h1964807.stratoserver.net/files/ … XPKzVQ.jpg
относится к первому запросу.
И соответственно первый explain ко второму запросу.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson