phpbar.de logo

Mailinglisten-Archive

Was ist performanter varchar oder set?

Was ist performanter varchar oder set?

Andreas Kunert akunert@main-rheiner.de
Tue Nov 19 11:59:50 2002


Hallo,

ich habe eine Tabelle, in der mehrere Felder zur genaueren Bestimmung 
des Datensatzes dienen.

Beispiel:
id,text,kat1,kat2,kat3,kat....

dabei sind die kat-Felder vom Typ varchar(255) und können diverse Zahlen 
enthalten in der Form
kat1 = 1;25;17
kat2 = 3;7;10 etc...

Jetzt suche ich beispielsweise alle Datensätze die in kat1 1 und 17 
enthalten und in kat2 3 und 7

Momentan über eine Abfrage in ungefähr der Form:
SELECT id,text
FROM tabelle
WHERE
( kat1 regexp '(^|;)1(;|\$)' OR kat1 regexp '(^|;)17(;|\$)' )
AND
( kat2 regexp '(^|;)3(;|\$)' OR kat2 regexp '(^|;)7(;|\$)' )

Irgendwie dauert das ganze bei ca. 5000 Datensätzen ziemlich lange.

Idee:
Die kat-Felder auf Typ SET mit allen möglichen Varianten setzen.

Abfrage umstricken auf:
SELECT id,text
FROM tabelle
WHERE
( FIND_IN_SET('1',kat1) OR FIND_IN_SET('17',kat1))
AND
( FIND_IN_SET('3',kat2) OR FIND_IN_SET('7',kat2) )

Frage:
Was ist performanter? (Speicher,Geschwindigkeit...)
Lohnt es sich überhaupt, den Aufwand für die Umstrukturierung zu leisten?

Jemand eine Idee oder einen Tipp oder liege ich völlig auf dem Holzweg?

Danke und Gruß
Andreas

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


php::bar PHP Wiki   -   Listenarchive