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