Neu Query Abfrage löst regelmäßig große Last auf dem Server aus

erich84

Aktives Mitglied
22. Juni 2019
17
3
Hallo,

folgende Query Abfrage führt regelmäßig zu großer Last auf dem Server:
SELECT tseo.cSeo, ssMerkmal.kHersteller, ssMerkmal.cName, ssMerkmal.nSortNr, COUNT(*) AS nAnzahl FROM ( SELECT thersteller.kHersteller, thersteller.cName, thersteller.nSortNr FROM tartikel JOIN thersteller ON tartikel.kHersteller = thersteller.kHersteller JOIN ( SELECT kArtikel FROM tartikelmerkmal WHERE kMerkmalWert IN (8,36,57,74,79,81,82,77) GROUP BY tartikelmerkmal.kArtikel HAVING count(*) = 8 ) AS tmerkmaljoin ON tmerkmaljoin.kArtikel = tartikel.kArtikel LEFT JOIN tartikelsichtbarkeit ON tartikel.kArtikel = tartikelsichtbarkeit.kArtikel AND tartikelsichtbarkeit.kKundengruppe = 1 WHERE tartikelsichtbarkeit.kArtikel IS NULL AND tartikel.kVaterArtikel = 0 AND (tartikel.cLagerBeachten != 'Y' OR tartikel.fLagerbestand > 0 OR tartikel.cLagerKleinerNull = 'Y' OR (tartikel.cLagerVariation = 'Y' AND ( SELECT MAX(teigenschaftwert.fLagerbestand) FROM teigenschaft INNER JOIN teigenschaftwert ON teigenschaftwert.kEigenschaft = teigenschaft.kEigenschaft WHERE teigenschaft.kArtikel = tartikel.kArtikel ) > 0)) GROUP BY tartikel.kArtikel ) AS ssMerkmal LEFT JOIN tseo ON tseo.kKey = ssMerkmal.kHersteller AND tseo.cKey = 'kHersteller' AND tseo.kSprache = 1 GROUP BY ssMerkmal.kHersteller ORDER BY ssMerkmal.cName

Die Abfrage führt regelmäßig dazu, dass der Shop für den Nutzer sehr langsam ist.
Was macht die Abfrage?
Kann man einstellen, dass diese Abfrage vielleicht nur Nachts läuft?
Gibt es sonst eine Möglichkeit das Problem (Server langsam) zu beheben?

Freue mich auf Eure Rückmeldung.

Viele Grüße

Erich Rohn
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.674
1.605
Berlin
Hallo,

folgende Query Abfrage führt regelmäßig zu großer Last auf dem Server:
SELECT tseo.cSeo, ssMerkmal.kHersteller, ssMerkmal.cName, ssMerkmal.nSortNr, COUNT(*) AS nAnzahl FROM ( SELECT thersteller.kHersteller, thersteller.cName, thersteller.nSortNr FROM tartikel JOIN thersteller ON tartikel.kHersteller = thersteller.kHersteller JOIN ( SELECT kArtikel FROM tartikelmerkmal WHERE kMerkmalWert IN (8,36,57,74,79,81,82,77) GROUP BY tartikelmerkmal.kArtikel HAVING count(*) = 8 ) AS tmerkmaljoin ON tmerkmaljoin.kArtikel = tartikel.kArtikel LEFT JOIN tartikelsichtbarkeit ON tartikel.kArtikel = tartikelsichtbarkeit.kArtikel AND tartikelsichtbarkeit.kKundengruppe = 1 WHERE tartikelsichtbarkeit.kArtikel IS NULL AND tartikel.kVaterArtikel = 0 AND (tartikel.cLagerBeachten != 'Y' OR tartikel.fLagerbestand > 0 OR tartikel.cLagerKleinerNull = 'Y' OR (tartikel.cLagerVariation = 'Y' AND ( SELECT MAX(teigenschaftwert.fLagerbestand) FROM teigenschaft INNER JOIN teigenschaftwert ON teigenschaftwert.kEigenschaft = teigenschaft.kEigenschaft WHERE teigenschaft.kArtikel = tartikel.kArtikel ) > 0)) GROUP BY tartikel.kArtikel ) AS ssMerkmal LEFT JOIN tseo ON tseo.kKey = ssMerkmal.kHersteller AND tseo.cKey = 'kHersteller' AND tseo.kSprache = 1 GROUP BY ssMerkmal.kHersteller ORDER BY ssMerkmal.cName

Die Abfrage führt regelmäßig dazu, dass der Shop für den Nutzer sehr langsam ist.
Was macht die Abfrage?
Kann man einstellen, dass diese Abfrage vielleicht nur Nachts läuft?
Gibt es sonst eine Möglichkeit das Problem (Server langsam) zu beheben?

Freue mich auf Eure Rückmeldung.

Viele Grüße

Erich Rohn

so sieht das übersichtlicher aus:
Code:
SELECT
    tseo.cSeo,
    ssMerkmal.kHersteller,
    ssMerkmal.cName,
    ssMerkmal.nSortNr,
    COUNT(*) AS nAnzahl
FROM
    (
    SELECT
        thersteller.kHersteller,
        thersteller.cName,
        thersteller.nSortNr
    FROM
        tartikel
    JOIN thersteller ON tartikel.kHersteller = thersteller.kHersteller
    JOIN(
        SELECT kArtikel
        FROM
            tartikelmerkmal
        WHERE
            kMerkmalWert IN(8, 36, 57, 74, 79, 81, 82, 77)
        GROUP BY
            tartikelmerkmal.kArtikel
        HAVING
            COUNT(*) = 8
    ) AS tmerkmaljoin
ON
    tmerkmaljoin.kArtikel = tartikel.kArtikel
LEFT JOIN tartikelsichtbarkeit ON tartikel.kArtikel = tartikelsichtbarkeit.kArtikel AND tartikelsichtbarkeit.kKundengruppe = 1
WHERE
    tartikelsichtbarkeit.kArtikel IS NULL AND tartikel.kVaterArtikel = 0 AND(
        tartikel.cLagerBeachten != 'Y' OR tartikel.fLagerbestand > 0 OR tartikel.cLagerKleinerNull = 'Y' OR(
            tartikel.cLagerVariation = 'Y' AND(
            SELECT
                MAX(teigenschaftwert.fLagerbestand)
            FROM
                teigenschaft
            INNER JOIN teigenschaftwert ON teigenschaftwert.kEigenschaft = teigenschaft.kEigenschaft
            WHERE
                teigenschaft.kArtikel = tartikel.kArtikel
        ) > 0
        )
    )
GROUP BY
    tartikel.kArtikel
) AS ssMerkmal
LEFT JOIN tseo ON tseo.kKey = ssMerkmal.kHersteller AND tseo.cKey = 'kHersteller' AND tseo.kSprache = 1
GROUP BY
    ssMerkmal.kHersteller
ORDER BY
    ssMerkmal.cName
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.674
1.605
Berlin
um das noch aufzuschlüsseln, das ist die Funktion gibHerstellerFilterOptionen() die das auslöst, eigentlich landen die Ergebnisse im Cache das sollte also nur einmalig stressen und ist sicherlich davon abhängig wie viel Merkmale und Hersteller du hast.
 

erich84

Aktives Mitglied
22. Juni 2019
17
3
Hallo css-umsetzung,

vielen Dank für die schnelle Antwort. Wir haben ca. 80 Hersteller und 20 unterschiedliche Merkmale. Das Caching ist aktiviert. Wissen sie wie häufig das Query ausgeführt wird?

Viele Grüße

Erich Rohn
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.674
1.605
Berlin
Also es ist so das es diese Abfrage natürlich in 100 verschiedenen Varianten geben kann aber jede Variante wird innerhalb von 24h nur einmal ausgeführt, ist aber auch wieder davon abhängig wie groß der Cache sein darf (Serverabhängig).
Theoretisch würde ich auch sagen das diese Abfrage nur in Verbindung mit aufgerufenen Merkmalen oder der Suche auftreten würden aber dazu müsste ich selbst richtig nachschauen um diese Aussage zu validieren.

80 Hersteller sind schon nen bissel und da auch die Artikelsichtbarkeiten involviert sind kann es eventuell wirklich zu Engpässen kommen denn ich denke dann sind da schon sehr viele Artikel im Shop. Das müsste man wirklich mal direkt am offenem Herzen auseinander nehmen um zu sehen ob da eventuell ein Index fehlt oder von Vorteil wäre
 

erich84

Aktives Mitglied
22. Juni 2019
17
3
Vielen Dank für die Informationen.

Welche Zugänge oder Informationen bräuchte man um der Sache auf den Grund zu gehen. Reicht FTP?
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.674
1.605
Berlin
Nein, der der da schaut, eventuell am besten sogar JTL (ist ja im Support inbegriffen) selbst , wird in jedem Fall einen backend, FTP und einen Zugang zu phpMyAdmin benötigen, da man die Queries dort am besten analysieren kann.
 
Ähnliche Themen
Titel Forum Antworten Datum
SQL Abfrage für verkaufte Artikel + aktueller Bestand JTL-Wawi 1.8 0
Datenbank-Abfrage per SQL nach Lagermenge pro Artikel & Warenbereich (WMSLager) JTL-Wawi 1.8 1
Beantwortet #GEFUNDEN# Suche jemand , der uns eine (automatische) SQL Abfrage erstellen kann mit Mail Ausgabe Dienstleistung, Jobs und Ähnliches 2
Neu SQL-Abfrage bei Kundenanlage JTL-Wawi 1.7 2
Neu CSV-Datei direkt in einer SQL-Abfrage verwenden User helfen Usern - Fragen zu JTL-Wawi 3
Neu SQL Abfrage in Excel User helfen Usern - Fragen zu JTL-Wawi 12
Neu SQL Abfrage Artikelbezeichnung auf Englisch für Artikeletikett User helfen Usern - Fragen zu JTL-Wawi 4
Neu Abfrage von Änderungen am Lagerbestand zu einem bestimmten Zeitpunkt in der Vergangenheit JTL Ameise - Eigene Exporte 3
Neu SQL Abfrage wird mehrfach ausgeführt - Ausgabe in der Übersicht falsch Eigene Übersichten in der JTL-Wawi 8
SQL Abfrage via Ameise: Seriennummer u. weitere Daten JTL-Wawi 1.8 0
Neu SQL Abfrage über ODBC für Bewegunghistorie (WMS) Eigene Übersichten in der JTL-Wawi 4
Komplexe SQL Abfrage zu gelieferten Artikeln mit eigenen Feldern - Hilfe gesucht JTL-Wawi 1.8 1
Neu Abfrage der Versandart von der Plattform User helfen Usern - Fragen zu JTL-Wawi 0
SQL Abfrage alle Aufträge ohne Lieferschein JTL-Wawi 1.8 2

Ähnliche Themen