mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Mi 24.04.2024 05:02 Benutzername: Passwort: Auto-Login

Thema: [mysql] Mehrfachabfrage geht in die Knie vom 30.10.2007


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> [mysql] Mehrfachabfrage geht in die Knie
Seite: 1, 2  Weiter
Autor Nachricht
localhost
Threadersteller

Dabei seit: 25.04.2003
Ort: nähe Bielefeld
Alter: 47
Geschlecht: Männlich
Verfasst Di 30.10.2007 14:13
Titel

[mysql] Mehrfachabfrage geht in die Knie

Antworten mit Zitat Zum Seitenanfang

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
  View user's profile Private Nachricht senden
Eistee
Administrator

Dabei seit: 31.10.2001
Ort: Grimma
Alter: 45
Geschlecht: Männlich
Verfasst Di 30.10.2007 14:32
Titel

Antworten mit Zitat Zum Seitenanfang

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.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
localhost
Threadersteller

Dabei seit: 25.04.2003
Ort: nähe Bielefeld
Alter: 47
Geschlecht: Männlich
Verfasst Di 30.10.2007 15:36
Titel

Antworten mit Zitat Zum Seitenanfang

hmm in anderen worten ... Ich muss die Abfrage umstricken bzw. gänzlich anders aufbauen?!
  View user's profile Private Nachricht senden
pixelpapst303

Dabei seit: 06.07.2006
Ort: hamburg
Alter: 50
Geschlecht: Männlich
Verfasst Di 30.10.2007 15:47
Titel

Antworten mit Zitat Zum Seitenanfang

du könntest auch versuchen, weitere indizes zu setzen. in deinem falle also auf inhstoff(Name)...


http://de.wikipedia.org/wiki/Datenbankindex

kann evtl auch noch was bringen...
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
localhost
Threadersteller

Dabei seit: 25.04.2003
Ort: nähe Bielefeld
Alter: 47
Geschlecht: Männlich
Verfasst Di 30.10.2007 16:02
Titel

Antworten mit Zitat Zum Seitenanfang

sauber das hat doch recht was gebracht von 146.000 sec zu 1.2 sec .... *Thumbs up!*

danke danke danke

ach man lernt halt nie aus.... Au weia!
  View user's profile Private Nachricht senden
pixelpapst303

Dabei seit: 06.07.2006
Ort: hamburg
Alter: 50
Geschlecht: Männlich
Verfasst Di 30.10.2007 16:15
Titel

Antworten mit Zitat Zum Seitenanfang

localhost hat geschrieben:
146.000 sec


* Ich bin ja schon still... * da unterstell ich einfach mal n schreibfehler, oder?? Grins
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
pRiMUS

Dabei seit: 09.09.2003
Ort: Vienna
Alter: 48
Geschlecht: Männlich
Verfasst Di 30.10.2007 17:44
Titel

Antworten mit Zitat Zum Seitenanfang

pixelpapst303 hat geschrieben:
localhost hat geschrieben:
146.000 sec


* Ich bin ja schon still... * da unterstell ich einfach mal n schreibfehler, oder?? Grins


muss nicht sein, wenn keine indizes gesetzt sind, ist das alles andere als performant.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Simonhard

Dabei seit: 25.01.2006
Ort: -
Alter: -
Geschlecht: -
Verfasst Di 30.10.2007 21:11
Titel

Antworten mit Zitat Zum Seitenanfang

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.
  View user's profile Private Nachricht senden
 
Ä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
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.