Mailinglisten-Archive |
Matthias Lampert wrote: > ... WHERE authorname = 'Schulze' AND > authorfirstname = 'Peter' AND > words LIKE "%Das ist die Rache für meinen Bruder!%" > > oder so: > > WHERE words LIKE "%Das ist die Rache für meinen Bruder!%" > AND authorname = 'Schulze' > AND authorfirstname = 'Peter' Solange keine Index-Strukturen definiert sind, ist das völlig egal. Ein "Optimierer", der bei Vorhandensein von Indexen auf "authorname" und "authorfirstname" nicht beide Varianten so auswertet, daß zunächst zumindestens einer der Indices genutzt wird, ist seinen Namen nicht Wert. Du solltest die verschiedenen Varianten mal mit Explain analyiseren, dies sollte aber an einer richtigen Datenbank erfolgen, da z.B. die Anzahl der unterschiedlichen Attributwerte in die Optimierung eingehen könnte. Zur Ausführung fallen mir zwei Schemata ein: a) Verwendung von einem Index: Es werden die Datensätze geleden, bei denen z.B. authorname paßt, die überigen Kriterien werden dann einzeln an den Datensätzen abgeprüft b) Verwendung zweier Indices: Es werden aus den Indices "authorname" und "authorfirstname" die passenden Datensatznummern gelesen und die Schnittmenge gebildet. Anschließend werden die Datensätze der Schnittmenge aus der DB geholt um das LIKE auszuführen. Zur Ausführung des LIKE ist hier im übnerigen kein Index anwendbar, das muß immer am Datensatz entschieden werden. Elmar --- !!NEU!! Fragen und Antworten zu MySQL und dieser Liste unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive