Best-Practice für multiple Filterselektion mit der selben Subquery gesucht

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Best-Practice für multiple Filterselektion mit der selben Subquery gesucht

    Hallo zusammen,

    ich habe ein kleines Problem beim erstellen eines E-Commerce Portals, auf Basis von symfony3.

    Hier ist ein Beispiel der zugrundeliegenden Tabelle auf MySQL Seite: https://picload.org/image/rdcdwoig/db_example.png

    Wie man sieht, existiert nur eine Produkttabelle, woher ich Daten selektiere. Keine umständlichen Joins zwischen verschiedenen Tabellen, welche der Geschwindigkeit schaden könnten.

    Hier ist ein kleines Mockup des aktuellen Standes, den ich habe um zu verdeutlichen was ich rendern möchte: https://picload.org/image/rdcdwoid/wireframe.jpg

    Der Anwendungsfall ist folgender: ich möchte eine gefilterte Produktansicht anzeigen (zum Beispiel "zeige mir alle Produkte mit der Farbe grün"). Anschließend erhält man die entsprechenden Produkte (roter Bereich im Mockup) + sowie in der Sidebar die Möglichkeit weitere Filter auf Basis der bereits gefilterten Produktcollection anzuwenden (z. B. Marken oder Größen, in der Praxis gibt es noch wesentlich mehr Filtermöglichkeiten; gelber Bereich).

    Das Problem dabei ist, wie man sehen kann, dass ich für jedes Ergebnis eine andere angepasste Query nutze (z. B. in der Sidebar mit verschiedenen "GROUP BY" Statements), jedoch darin immer die selbe Subquery eingesetzt wird ("FROM products WHERE [aktuelle Filter]"), welche die aktuelle Produktcollection darstellt.

    Dieser Umstand drückt die Geschwindigkeit meiner Seite immens (über eine Million Produkte in der Datenbank und ich brauche ca. 7-8 mal die eigentlich selbe Query mit jeweils leicht abgeänderten Parametern).

    Ich habe schon eine Lösung gefunden, die leider für mich nicht in Frage kommt. Das wäre der Umstieg der Umgebung auf MariaDB, welches Subquery Caching ermöglicht. Dieser Umstieg ist in der aktuellen Umgebung leider nicht möglich. Ein Caching durch MySQL ist bereits aktiviert.

    Kann mir irgendjemand ein Paar Hinweise oder Hilfestellungen geben, wie ich es schaffe auf clevere Art und Weise die Queries zu vermindern, bzw. den kompletten Prozess ordentlich zu verschnellern. Gibt es da eine bessere Möglichkeit, als wie ich es aktuell mache? Wie würdet ihr da heran gehen?

    Vielen Dank schon einmal für euere Hilfe!

  • #2
    Mal eine dumme Frge. Warum GROUP BY? Mir erschließt sich der Sinn nicht. Du kannst doch mit Zeichenkettenverknüpfung den WHERE-Teil systematisch auffüllen.

    Gruß
    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Siehe Best-Practice für multiple Filterselektion mit der selben Subquery gesucht - PHP Forum: phpforum.de

      Kommentar


      • #4
        Naja, mehrere Posts in diversen Foren und noch immer keine Lösung. Ich lass das hier noch mal durchgehen. Aber nur wenn der Thread-Starter endlich mal Code postet.

        Peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar

        Lädt...
        X