По договоренности
Есть проблема с сайтом, который написан на MODEX.
произошел сбой в программе.
Это написали из- службы поддержки
Вся проблема заключается в запросах, подобных тому, который я отписал выше:
SELECT sc.*, price.value as price,spare_vendor.value as spare_vendor,spare_compatibility.value as spare_compatibility,spare_articul.value as spare_articul,price_vega.value as price_vega,((CASE WHEN CONCAT_WS(' ', category.pagetitle, sc.pagetitle, vendorName.pagetitle, articul.value, spare_compatibility.value) LIKE '%головка%' THEN 1 ELSE 0 END) + (CASE WHEN CONCAT_WS(' ', category.pagetitle, sc.pagetitle, vendorName.pagetitle, articul.value, spare_compatibility.value) LIKE '%epson%' THEN 1 ELSE 0 END)) as relevance FROM `vegasdru_idb`.`modx_site_content` sc LEFT OUTER JOIN `vegasdru_idb`.`modx_site_tmplvar_contentvalues` price ON price.contentid=sc.id AND price.tmplvarid=17 LEFT OUTER JOIN `vegasdru_idb`.`modx_site_tmplvar_contentvalues` spare_vendor ON spare_vendor.contentid=sc.id AND spare_vendor.tmplvarid=39 LEFT OUTER JOIN `vegasdru_idb`.`modx_site_tmplvar_contentvalues` spare_compatibility ON spare_compatibility.contentid=sc.id AND spare_compatibility.tmplvarid=40 LEFT OUTER JOIN `vegasdru_idb`.`modx_site_tmplvar_contentvalues` spare_articul ON spare_articul.contentid=sc.id AND spare_articul.tmplvarid=41 LEFT OUTER JOIN `vegasdru_idb`.`modx_site_tmplvar_contentvalues` price_vega ON price_vega.contentid=sc.id AND price_vega.tmplvarid=58 LEFT JOIN modx_site_content vendorName ON vendorName.id=spare_vendor.value LEFT JOIN modx_site_content category ON category.id=sc.parent LEFT JOIN `vegasdru_idb`.`modx_site_tmplvar_contentvalues` articul ON articul.contentid=sc.id AND articul.tmplvarid=41 WHERE FIND_IN_SET(sc.parent, "2284,2286,2285,2287,2288,2289,2290,2291,2292,2293,13666,229 4,2295,2296,2297,2298,2299,2300,2301,2307,2308,2309,2310,2311,231 2,2313,2315,2318,2319,2321,2320,2322,2323,2324,2325,2326,2327" ) AND sc.template=17 AND sc.deleted=0 AND sc.published=1 AND (CONCAT_WS(' ', category.pagetitle, sc.pagetitle, vendorName.pagetitle, articul.value, spare_compatibility.value) LIKE '%головка%' AND (sc.template=16 OR sc.template=17) OR CONCAT_WS(' ', category.pagetitle, sc.pagetitle, vendorName.pagetitle, articul.value, spare_compatibility.value) LIKE '%epson%' AND (sc.template=16 OR sc.template=17)) ORDER BY relevance DESC LIMIT 0,24;
Один такой запрос не успевает отработать за 10 минут (для сравнения большинство запросов отрабатывают больше, чем за секунду) и спокойно отъедает пару сотен мегабайт памяти.
Я попробовал провести реструктуризацию таблиц, однако подобные запросы все равно корректно не отрабатывают. Попробуйте уточнить у разработчика не использовались ли у вас при работе с БД табличные индексы и Sphinx?