Anzahl der Suchergebnisse für Optionen

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

  • Anzahl der Suchergebnisse für Optionen

    Hallo Hallo!

    Ich stehe vor einem kleinen Performance Problem, zu welchem ich schon mehrere Ansätze habe, jedoch nicht weiß, ob es nicht auch noch performantere Lösungen gibt.

    Das Problem:
    Angenommen wir haben ein Suchformular mit mehreren möglichen Suchoptionen. Nehmen wir hier einfach das Beispiel der Suche nach einem Auto. Als Suchoptionen haben wir hier die Fahrzeugmarke, die Farbe des Fahrzeuges, das Baujahr und die Laufleistung. Ich wähle die Farbe blau und führe die Suche aus.

    Das Ergebnis enthält alle blauen Autos jeglicher Fahrzeugmarken, jeglicher Baujahre und Laufleistungen. Im Suchergebnis soll nun auch angezeigt werden, wieviele blaue Fahrzeuge es zu jeder verfügbaren Fahrzeugmarke gibt. Angenommen die Fahrzeugmarke "Alfa Romeo" befindet sich im Pool. Die Fahrzeugmarke "Alfa Romeo" soll angezeigt werden mit der Anzahl der verfügbaren blauen Fahrzeuge. Die vorhandenen Sucheergebnisse wird in diesem Fall also nach Fahrzeugmarke gefiltert.

    Lösungsansätze:
    1. Zu jeder möglichen Option ein Query ausführen, welches das gewählte Suchargument beachtet.
      Beispiel: Ein Query zählt alle verfügbaren Fahrzeugmarken und die dazu verfügbaren Fahrzeuge mit der Farbe blau. Im Endeffekt werden hier bei jeder abgesendeten Suchanfrage etliche Queries ausgeführt, die die Anzahl der Treffer für alle möglichen Suchargumente ermittelt.
    2. Die Suche ausführen und das daraus resultierende Array mit allen Treffern nachträglich durchlaufen und somit die Anzahl aller möglichen Optionen filtern.


    Welcher Weg wäre performanter und gibt es andere Ansätze, um so performant wie möglich zu arbeiten?
    MM Newmedia | MeinBlog

  • #2
    Wenn du die Ergebnisse zuerst nach Automarke sortierst, braucht es doch anschließend nur noch einen Gruppenwechsel, in dem Anzahlen je Marke aufsummiert werden …?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Also wäre Variante 2 die performantere? Das gesamte Suchergebnis auslesen und dann mittels Gruppenwechsel die Anzahl der anderen Suchargumente ermitteln.

      Praktisches Beispiel:
      PHP-Code:
      $sql "
          SELECT
              autoID,
              autoFahrzeugmarke,
              autoFarbe,
              autoLaufleitsung,
              autoBaujahr
          FROM
              meine_autos
          WHERE
              autoFarzeugmarke = 'Alfa Romeo'
      "
      ;

      $result $baujahr $laufleistung $farbe = array();
      try {
          foreach (
      $this->dbHandler->query($sql) as $row) {
              
      // Anzahl der verschiedenen Farben
              
      if (!isset($farbe[$row['autoFarbe'])) {
                  
      $farbe[$row['autoFarbe']] = 0;
              }

              
      $farbe[$row['autoFarbe']++;

              
      // gleiches für Laufleistung und Baujahr
              
      ...

              
      $result[] = $row;
          }
      } catch (
      PDOException $e) {
          
      // Exception Handling

      Bedeutet im Umkehrschluss aber auch, dass ich das erzielte Suchergebnis irgendwo zwischenspeichern muss. Sofern der User dann z.B. auf den Link mit den erzielten Treffern anhand der Farbe klickt, müssen aus dem erzielten Ergebnis dann nur die entsprechenden Fahrzeuge in der entsprechenden Farbe angezeigt werden.
      MM Newmedia | MeinBlog

      Kommentar

      Lädt...
      X