phpbar.de logo

Mailinglisten-Archive

Wie gestaltet man diese Abfrage ?

Wie gestaltet man diese Abfrage ?

Christoph 'Leo' Weißenborn chw-le at gmx.de
Fre Okt 21 10:14:12 CEST 2005


Hallo B. Wolf,

also langsam wird es Zeit, hier ein Ende zu finden.
1.) Du schreibst TOFU
2.) Du unterläßt die Quoting-Zeichen
3.) lassen sich die Fragen mit dem Handbuch auch leicht beantworten
4.) Probieren geht über studieren
5.) autodidaktisch erworbenes Wissen/erworbene Erfahrungen bringen tieferes
Verständnis

> Nun noch zu meiner "OR"-Verknüpfung.
> [... eine QUERY mit OR ...]
> Von der Abfrage-Dauer haben beide ziemlich genau gleich lang gebraucht,
> allerdings habe ich keine Ahnung ob diese werte realistisch sind wenn sich
> ...

Dann schreib Dir ein Skript, daß die Tabelle mit 10.000 Werten oder mehr füllt.
Wie? Zuerst ein Dump der aktuellen Tabelle. Dann mit einem guten Editor oder mit
einem kleinen Skript neue Datenzeilen mit passenden/realistischen Zufallswerten
füllen. Dann das Dump mit den neuen Daten in die DB einspielen - fertig.

> Wirken sich die LIKE-Vergleiche sehr stark auf die Performance aus?

Ja. Derlei LIKE-Bedingungen ('%wort%') können durch keinen Index unterstützt
werden, da der Vergleichsbeginn nicht klar ist. (Also ob ab der ersten, zweiten
oder der x-ten Stelle im String verglichen werden muß, um die Bedingung wahr
werden zu lassen.) Bei einem LIKE 'B%' könnte der Bereich mit Zeichenketten,
die vor und nach B sortiert werden übersprungen werden. Ein LIKE '%B%' muß jede
Zeichenkette nach dem B an jeder Stelle untersuchen, was bei steigendem
Datenaufkommen immer länger dauert, logischerweise.

Noch ein Wort zum Vergleich der beiden Queries.
Die OR-Query benutzt (noch) keine INNER JOINS, die ja (Zitat Andreas) der
Optimierer ausnutzen kann. Also den AND-Teil solltest Du in die INNER JOIN ON
stecken. Dann könnte der Optimierer wenigstens diesen Teil effizient realisieren
können.
Aber dies überlasse ich Dir als Übung.

Gruß,
 Christoph
-- 
Fingerprint=65B7 73B6 5969 AC2B 4572 39A2 0DBC DAC1 3D6A 45B7

----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive