punktselect versus like-select ??

punktselect versus like-select ??

am 07.11.2006 09:46:46 von Volker Zidek

Hallo

mir ist bei nem Performancetest zu SELECT statements was merkwürdiges
aufgefallen.
Ich hab (vereinfacht) 2 Tables. Eine mit ca 680,000 rows und eine mit ca
20,000 rows.
Das merkwürdige ist jetzt, wenn ich bei der großen nen Punktselect mache
(SELECT id FROM namen WHERE idx='PET';) (Die Spalte idx beinhaltet nur
die ersten 3 Zeichen der Spalte name: Beispiel name=PETER, idx=PET)
ist der langsammer wie wenn ich das ganze mit LIKE mache. (SELECT id
FROM namen WHERE name LIKE 'PET%';)
Bei der kleinen Tabelle verhällt sich dies aber genau andersrum. Da ist
der Punktselect fast doppelt so schnell wie der LIKE (Was ja auch so
sein sollte)

Ich verstehe jetzt nich warum der Punktselect bei der großen Tabelle so
langsamer ist. (Ich hab insgesammt 12000 statements von 3 verschiedenen
Clients losgeschickt und 4000 statements von einem client und komme in
beiden Fällen auf das gleiche Ergebnis)

Könnt Ihr mir da weiterhelfen bzw erklären warum das bei der großen
Tabelle so ist?

Schonmal Danke.

Re: punktselect versus like-select ??

am 07.11.2006 10:03:46 von Claus Reibenstein

Volker Zidek schrieb:

> Das merkwürdige ist jetzt, wenn ich bei der großen nen Punktselect mache
> (SELECT id FROM namen WHERE idx='PET';) [...]
> ist der langsammer wie wenn ich das ganze mit LIKE mache. (SELECT id
> FROM namen WHERE name LIKE 'PET%';)

Das deutet darauf hin, dass Du auf "name" einen Index gesetzt hast und
auf "idx" nicht.

Gruß. Claus

Re: punktselect versus like-select ??

am 07.11.2006 10:18:59 von Volker Zidek

Hallo Claus
Claus Reibenstein schrieb:
> Volker Zidek schrieb:
>
>> Das merkwürdige ist jetzt, wenn ich bei der großen nen Punktselect mache
>> (SELECT id FROM namen WHERE idx='PET';) [...]
>> ist der langsammer wie wenn ich das ganze mit LIKE mache. (SELECT id
>> FROM namen WHERE name LIKE 'PET%';)
>
> Das deutet darauf hin, dass Du auf "name" einen Index gesetzt hast und
> auf "idx" nicht.
>
> Gruß. Claus

nein leider nicht weder auf name noch idx liegt ein index.
Ich leg jetzt grade mal auf idx nen index und teste

thx Volker