
Mam zapytanie i baze, niby wszystko ok, ale wykonuje sie troche długo bo baza produktów troche w EroBAY urosła...
Zapytanie jest z wyszukiwarki, a konkretnie przyporządkowuje kategorie produktów względem znalezionych w bazie danych...
Oto query:
SELECT `c`.`CAT_Id` AS `id`, `c`.`PARENT_Id` AS `parent`, `c`.`CAT_Name` AS `name`, `c`.`CAT_Url` AS `url`, ( SELECT COUNT(1) FROM `products` AS `p` JOIN `productsdescription` AS `pd` ON (`pd`.`PRD_Id` = `p`.`PRD_Id`) WHERE (`p`.`CAT_Id` IN ( SELECT `c2`.`CAT_Id` FROM `categories` AS `c2` WHERE ( (`c2`.`CAT_Id` = `c`.`CAT_Id`) OR (`c2`.`CAT_Ip` LIKE CONCAT(`c`.`CAT_Id`,'.%')) ) AND ( (`c2`.`CAT_Active` = 1) AND (`c2`.`CAT_Counter` > 0) ) ) ) AND (MATCH(`pd`.`PRD_Name`, `pd`.`PRD_Description`) AGAINST ('kostium' IN BOOLEAN MODE)) ) AS `licznik` FROM `categories` AS `c` WHERE ( (`c`.`CAT_Active` = 1) AND (`c`.`CAT_Counter` > 0) ) AND ( (`c`.`CAT_Id` = 61) OR (`c`.`PARENT_Id` = 61) OR (`c`.`CAT_Ip` LIKE CONCAT(`c`.`CAT_Id`,'.%')) OR (`c`.`PARENT_Id` = 3) ) GROUP BY `c`.`CAT_Id` HAVING (`licznik` > 0) ORDER BY `c`.`PARENT_Id` ASC, `c`.`CAT_Sort` ASC
Problem znajduje się w subzapytaniu zwracającym wartość licznik, a konkretnie w kolejnym zagnierzdzeniu które wpisuje do IN podkategorie..
Może ktoś ma jakiś fajny pomysł jak to ugryźć...