Mailinglisten-Archive |
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