Hallo,
ich habe eine relative große mysql-db mit ca 1.5 mio datensätzen und habe in meiner applikation (mit php) eine ganze reihe von variablen sql-abfragen, die je nach auswahl des benutzers mit parametern gefüllt werden. hierbei sind - abhängig von der auswahl eines benutzers in den entsprechenden dropdown-menüs - mehrere tausend kombination von beteiligten spalten aus der db möglich. der benutzer hat ein interface in dem er über 10 dropdown-menüs je einen wert auswhählen - aber nicht muss! in den dropdown-menüs hat er zwischen 5 und 70 mögliche werte. deswegen lassen sich die kombinationen für die abfragen schwer vorher sagen und somit bringt es mir auch nichts views für eventuelle db-abfragen zu erstellen. im moment dauern abfragen ewig - wenn überhaupt mal etwas zurückkommt…in jeder abfrage verwende ich group-by, weswegen mir scheint, dass das eine mögliche ursache für die miserable performance sein könnte. im moment besteht die db nur aus einer tabelle, in der alle attribute drinstehen, so dass schonmal keine joins zwischen tabellen nötig sind. eine typische abfrage sieht so aus:
$Query = "select text, count(*) as anzahl from general where
sex=’$gender’ group by text order by anzahl desc limit 5";
oder auch so:
$Query = „select text, count(*) as anzahl from general where sex=’$gender’ AND age between ‚$age‘ and (’$age’+10) AND country=’$cntry’ AND familystatus=’$familystatus’ AND bodytype=’$bodytype’ AND ethnicity=’$ethnicity’ AND religion=’$religion’ AND education=’$education’ AND income=’$income’ AND sexualorientation=’$sexualorientation’ group by text order by anzahl desc limit 5“;
es wäre sehr schön für mich wenn es eine einfache antwort auf die frage gäbe was eine alternative zu „group by“ ist, die performanter arbeitet aber vermutlich ist die antwort nicht so einfach…
ich wäre froh um den ein oder anderen grundlegenden tipp oder nützlichen link zur möglichen optimierung - meine db liefert sicher ausreichend genug potenzial
danke
sebastian