Autor |
Nachricht |
localhost
Threadersteller
Dabei seit: 25.04.2003
Ort: nähe Bielefeld
Alter: 47
Geschlecht:
|
Verfasst Di 30.10.2007 14:13
Titel [mysql] Mehrfachabfrage geht in die Knie |
|
|
Wer weiß Rat?
Möchte eine Mehrfachabfrage realisieren, welche soweit auch funktioniert. Das Ding ist,
suche ich nach einer Nummer (Inhaltsstoff(ihstartnr)) geht das ganze ab wie Schmidts Katze.
Hingegen suche ich nach einem Inhaltsstoff (inhstoff(Name)) geht das ding vollig in die Knie
Suche nach Inhaltsstoffe (numerisch (funzt))
Code: | SELECT t1.ihstartnr, t1.inhstoff, t2.rezeptnr, t2.ihstartnr, t2.menge, t2.einheit, t3.rezeptnr, t3.name
FROM
b_inhaltsstoff t1, inhaltundmengen t2, rezept t3
WHERE
t1.ihstartnr = t2.ihstartnr AND t2.rezeptnr = t3.rezeptnr AND t1.ihstartnr
LIKE '%$keyword%'
ORDER BY t3.name ASC
|
Suche nach Inhaltsstoffe (abc(dauert ewig lang))
Code: | SELECT t1.ihstartnr, t1.inhstoff, t2.rezeptnr, t2.ihstartnr, t2.menge, t2.einheit, t3.rezeptnr, t3.name
FROM
inhaltsstoff t1, inhaltundmengen t2, rezept t3
WHERE
t1.ihstartnr = t2.ihstartnr AND t2.rezeptnr = t3.rezeptnr AND t1.inhstoff
LIKE '%$keyword%'
ORDER BY t3.name ASC
|
Die Tabellen
Code: | TABLE `inhaltsstoff`
`ID`
`ihstartnr`
`inhstoff`
PRIMARY KEY (`ID`)
TABLE inhaltundmengen
`ID`
`rezeptnr`
`ihstartnr`
`menge`
`einheit`
PRIMARY KEY (`ID`)
TABLE rezept
`ID`
`rezeptnr`
`name`
PRIMARY KEY (`ID`)
|
Kann mir wer da einen Tipp geben, warum, weshalb, wieso ...
Vielen Danke
|
|
|
|
|
Eistee
Administrator
Dabei seit: 31.10.2001
Ort: Grimma
Alter: 45
Geschlecht:
|
Verfasst Di 30.10.2007 14:32
Titel
|
|
|
Wenn du mit LIKE %...% suchst, muss mysql einen Full table Scan über die ganze Spalte machen.
Was mysql genau tut, kannst du sehen, wenn du das SELECT Statement in phpmyadmin kopierst und statt dem SELECT ein EXPLAIN SELECT machst.
|
|
|
|
|
Anzeige
|
|
|
localhost
Threadersteller
Dabei seit: 25.04.2003
Ort: nähe Bielefeld
Alter: 47
Geschlecht:
|
Verfasst Di 30.10.2007 15:36
Titel
|
|
|
hmm in anderen worten ... Ich muss die Abfrage umstricken bzw. gänzlich anders aufbauen?!
|
|
|
|
|
pixelpapst303
Dabei seit: 06.07.2006
Ort: hamburg
Alter: 50
Geschlecht:
|
|
|
|
|
localhost
Threadersteller
Dabei seit: 25.04.2003
Ort: nähe Bielefeld
Alter: 47
Geschlecht:
|
Verfasst Di 30.10.2007 16:02
Titel
|
|
|
sauber das hat doch recht was gebracht von 146.000 sec zu 1.2 sec ....
danke danke danke
ach man lernt halt nie aus....
|
|
|
|
|
pixelpapst303
Dabei seit: 06.07.2006
Ort: hamburg
Alter: 50
Geschlecht:
|
Verfasst Di 30.10.2007 16:15
Titel
|
|
|
localhost hat geschrieben: | 146.000 sec |
da unterstell ich einfach mal n schreibfehler, oder??
|
|
|
|
|
pRiMUS
Dabei seit: 09.09.2003
Ort: Vienna
Alter: 48
Geschlecht:
|
Verfasst Di 30.10.2007 17:44
Titel
|
|
|
pixelpapst303 hat geschrieben: | localhost hat geschrieben: | 146.000 sec |
da unterstell ich einfach mal n schreibfehler, oder?? |
muss nicht sein, wenn keine indizes gesetzt sind, ist das alles andere als performant.
|
|
|
|
|
Simonhard
Dabei seit: 25.01.2006
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Di 30.10.2007 21:11
Titel
|
|
|
FULLTEXT-Suche! Mysql bietet doch eine wunderbare Möglichkeit, schnell und effizient suchen. Einfach Fulltext-Index auf die durchsuchenden Spalten legen. Für weiteres.. Google.
|
|
|
|
|
|
|
|
Ähnliche Themen |
[PHP + mySQL] Kann Fehler in einer mySQL-Phrase nicht finden
[PHP/MySQL] MySQL Error: 1054, falsche Tabelle ausgewählt?
[MySql]Lost connection to MySQL server during query
[php / mysql] Mysql Daten in php als Link ausgeben
(php-mysql) übergabe von formulardaten und abfrage m. mysql
[PHP / MySQL] MySQL-Funktion gesucht: letzteÄnderungTabelle
|
|