Задавайте вопросы, мы ответим
Вы не зашли.
Есть 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 секунды
Подскажите, в чем подвох? Где дырка в логике?
Неактивен
По-моему, вы перепутали соотношение запросов и explain.
У вас второй explain
2)http://h1964807.stratoserver.net/files/ … XPKzVQ.jpg
относится к первому запросу.
И соответственно первый explain ко второму запросу.
Неактивен