Shop mit vielen Merkmalen geht am Stock. Debug zeigt unzählige:
Indizes sind vorhanden.
Ist das in der aktuellsten Shop Version besser oder kann ich mir den Aufwand sparen ?
SQL:
SELECT ssMerkmal.cSeo, ssMerkmal.kMerkmal, ssMerkmal.kMerkmalWert, ssMerkmal.cMMWBildPfad,
ssMerkmal.nMehrfachauswahl, ssMerkmal.cWert, ssMerkmal.cName, ssMerkmal.cTyp,
ssMerkmal.cMMBildPfad, COUNT(DISTINCT ssMerkmal.kArtikel) AS nAnzahl
FROM (SELECT tmerkmalwertsprache.cWert, tmerkmalwertsprache.cSeo, tmerkmal.cName, IF(EXISTS (SELECT 1
FROM tartikelmerkmal AS im1
INNER JOIN tartikel AS innerProduct ON innerProduct.kArtikel = im1.kArtikel
WHERE innerProduct.kVaterArtikel = 0 AND im1.kMerkmalWert IN (354, 458, 648, 755, 858, 892, 997, tartikelmerkmal.kMerkmalWert)
AND im1.kArtikel = tartikel.kArtikel
GROUP BY innerProduct.kArtikel
HAVING COUNT(im1.kArtikel) = (SELECT COUNT(DISTINCT im2.kMerkmal)
FROM tartikelmerkmal im2
INNER JOIN tartikel AS innerProduct ON innerProduct.kArtikel = im2.kArtikel
WHERE innerProduct.kVaterArtikel = 0 AND im2.kMerkmalWert IN (354, 458, 648, 755, 858, 892, 997, tartikelmerkmal.kMerkmalWert))), tartikel.kArtikel, NULL) AS kArtikel, tartikelmerkmal.kMerkmal, tartikelmerkmal.kMerkmalWert, tmerkmalwert.cBildPfad AS cMMWBildPfad, tmerkmal.nSort AS nSortMerkmal, tmerkmalwert.nSort, tmerkmal.cTyp, tmerkmal.nMehrfachauswahl, tmerkmal.cBildPfad AS cMMBildPfad
FROM tartikel JOIN tkategorieartikel ON tartikel.kArtikel = tkategorieartikel.kArtikel
JOIN tartikelmerkmal ON tartikel.kArtikel = tartikelmerkmal.kArtikel
JOIN tmerkmalwert ON tmerkmalwert.kMerkmalWert = tartikelmerkmal.kMerkmalWert
JOIN tmerkmal ON tmerkmal.kMerkmal = tartikelmerkmal.kMerkmal
INNER JOIN tmerkmalwertsprache ON tmerkmalwertsprache.kMerkmalWert = tartikelmerkmal.kMerkmalWert
AND tmerkmalwertsprache.kSprache = 1
LEFT JOIN tartikelsichtbarkeit ON tartikel.kArtikel = tartikelsichtbarkeit.kArtikel
AND tartikelsichtbarkeit.kKundengruppe = 2
WHERE tkategorieartikel.kKategorie = 558 AND tartikelsichtbarkeit.kArtikel IS NULL AND tartikel.kVaterArtikel = 0
) AS ssMerkmal
GROUP BY ssMerkmal.kMerkmalWert
ORDER BY ssMerkmal.nSortMerkmal, ssMerkmal.nSort, ssMerkmal.cWert
Indizes sind vorhanden.
Ist das in der aktuellsten Shop Version besser oder kann ich mir den Aufwand sparen ?