Announcement

Collapse
No announcement yet.

Artikelfilter ähnlich wie bei mobile.de

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Artikelfilter ähnlich wie bei mobile.de

    Wozu? Was ist das Problem? Ist der SQL zu langsam?
    Zuletzt editiert von Christian Marquardt; 03.12.2011, 16:16.
    Christian

  • #2
    Hallo Christian
    danke für deine Antwort
    ja Die Abfrae wird mit jedem And-operator langsamer . und es interessiert mich , ob es eine bessere Lösung gibt

    vielen dank

    Comment


    • #3
      Das ist dann doch eher ein Problem der Optimierung der DB -> http://entwickler-forum.de/forumdisplay.php?f=28

      Vermutlich setzen von Indzies, Views?....
      Christian

      Comment


      • #4
        hallo
        Indizes sind auf den join-Spalten gesetzt ok dann erstelle ich einen andern Eintrag bei
        http://entwickler-forum.de/forumdisplay.php?f=28

        vielen dank

        Comment


        • #5
          Artikelfilter ähnlich wie bei mobile.de

          Ich entwickle gerade eine derartige Filtermöglichkeit ähnlich wie bei mobile.de "die Fahrzeugsuche ".
          Ich muss ein Filter programmieren in dem Anhängerkupplungen, für ein Produkt mit sehr verschieden boolescher Eigenschaften (zurzeit über 40(werden bestimmt mehr), die als Checkboxen realisiert wird

          Also ich muss erstmal überprüfen, ob ein Produkt eine bestimmte Eigenschaften und ob sie in dem gesuchten Zeitraum verhandeln ist .Dazu muss die Anzahl der Eigenschaften neu berechnet werden. wenn eine Eigenschaft aktiviert bzw. deaktiviert wird.
          Hallo
          die MySql Abfrage sieht ungefähr so aus

          SELECT count(distinct(prop.id)) FROM Product p
          INNER JOIN properties prop ON p.`id` = prop.id
          WHERE prop.id =1 and prop.id =2 and prop.id =1 and prop.id =2 and ....

          group by prop.id


          Das ist eigentlich nicht so kompliziert, so lange die Anzahl der ausgewählten Eigenschaften nicht groß sind. aber in worst case werden alle Eigenschaften aktiviert. so dass die Performance der Abfrage stark beeinflusst wird.Indizes sind auf den join-Spalten gesetzt

          Eine Lösung mittels Binärwerte kommt leider wegen der großen Anzahl der Eigenschaften der Eigenschaften nicht in Frage!!!

          hat jemand eine Idee bzw. Erfahrung damit??

          Comment


          • #6
            Es gibt spezielle Datenbanken Indizes die nur für solche Suchen ausgelegt sind. Gerade wenn das Thema zählen der erzielten Ergebnisse noch dazu kommt ist man mit reinen SQL Techniken sehr schnell am Ende des machbaren bzw. der Performance.

            Comment


            • #7
              Hallo,
              Originally posted by maik2211 View Post
              ...
              die MySql Abfrage sieht ungefähr so aus

              SELECT count(distinct(prop.id)) FROM Product p
              INNER JOIN properties prop ON p.`id` = prop.id
              WHERE prop.id =1 and prop.id =2 and prop.id =1 and prop.id =2 and ....

              group by prop.id


              Das ist eigentlich nicht so kompliziert, ...
              Nicht kompliziert aber vom Ansatz her falsch und wird so auch nicht funktionieren! Es sei denn, du benötigst eine Abfrage die mit Sicherheit KEIN Ergebnis liefert. Die prop.id kann NIE gleichzeitig 1 UND 2 sein! Dein Count wird also IMMER 0!
              Hier wäre ein OR oder ein IN richtig.

              Gruß Falk

              P.S.: Formatierung von SQL in Beiträgen
              Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

              Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

              Comment

              Working...
              X