Neu Error executing query SELECT ssMerkmal.cSeo

Timme

Gut bekanntes Mitglied
17. Mai 2020
415
24
Es war sehr auffällig, das ab Zeitpunkt X keine Bestellungen mehr im Shop eingingen.
Ein Blick in den Log zeigte über 1300 Einträge seit dem Zeitpunkt des Bestellungsstops.

Fehler Core

Error executing query 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 (1485, 1502, 1543, 1546, 1550, 1556, 1573, 1574, 1576, 1707, 1723, 1744, 1760, 1975, 2002, 2445, 2464, 2586, 2840, 2939, 2943, 3343, 3370, 3390, 3393, 3394, 3405, 3412, 3443, 3444, 3445, 3572, 3641, 3643, 3656, 3658, 3933, 5340, 5353, 5370, 5545, 6541, 6758, 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 (1485, 1502, 1543, 1546, 1550, 1556, 1573, 1574, 1576, 1707, 1723, 1744, 1760, 1975, 2002, 2445, 2464, 2586, 2840, 2939, 2943, 3343, 3370, 3390, 3393, 3394, 3405, 3412, 3443, 3444, 3445, 3572, 3641, 3643, 3656, 3658, 3933, 5340, 5353, 5370, 5545, 6541, 6758, 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 (SELECT DISTINCT kArtikel
FROM tartikelmerkmal
WHERE kMerkmalWert = 3678
) AS tmerkmaljoin ON tmerkmaljoin.kArtikel = tartikel.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 = 1
WHERE tartikelsichtbarkeit.kArtikel IS NULL AND tartikel.kVaterArtikel = 0

) AS ssMerkmal
GROUP BY ssMerkmal.kMerkmalWert
ORDER BY ssMerkmal.nSortMerkmal, ssMerkmal.nSort, ssMerkmal.cWert
SQLSTATE[70100]: : 1969 Query execution was interrupted (max_statement_time exceeded)


Was bedeutet das? Was löst hier den Fehler aus?
Wir haben sehr sehr viele Filter zu Produktabmessungen, Materialeigenschaften etc.

Viele Grüße
Timme
 

NoOne

Sehr aktives Mitglied
16. März 2024
673
230
Unter anderem diese Zeile hier:
HAVING COUNT(im1.kArtikel) = (SELECT COUNT(DISTINCT im2.kMerkmal)
lässt mich vermuten, das ihr die Option "Trefferanzahl bei Merkmalfiltern anzeigen" (im Admin-Bereich nach merkmalfilter_trefferanzahl_anzeigen suchen) auf "Trefferanzahl auch bei möglicher Mehrfachauswahl anzeigen (performancelastig)" stehen habt. Wenn ihr dazu wirklich viele Filter habt, dann wird das euren SQL-Server vermutlich über kurz oder lang abschießen. Stellt die Option besser auf "Trefferanzahl nur bei Einfachauswahl anzeigen" oder "Trefferanzahl nie anzeigen".

Wobei, es schießt euren SQL-Server wohl nicht ab, aber die Abfrage dauert zu lange und der SQL-Server beendet die nach X Sekunden selbst, weil die eingestellte max_statement_time überschritten wird.
 
  • Gefällt mir
Reaktionen: Timme

Timme

Gut bekanntes Mitglied
17. Mai 2020
415
24
Super, danke.
Ja wir hatten es wohl am Anfang, als es nur wenige Merkmale gab, angestellt.
Ich habe es nun deaktiviert.
Vielen Dank für die Erleuchtung 😇
 

Timme

Gut bekanntes Mitglied
17. Mai 2020
415
24
Nein hat leider nichts gebracht.
Die Meldung taucht alle 30-35 Sekundentakt im Log auf.
 

NoOne

Sehr aktives Mitglied
16. März 2024
673
230
Du solltest ggf. auch mal beim Hoster nachfragen, wie die max_statement_time gesetzt ist. Der Merkmalfilter hat eigentlich nichts mit dem Bestellabschluss zu tun. Und ob eventuell zu viele Bots unterwegs sind, die dadurch auch andere Abfragen lahmlegen.