Mailinglisten-Archive |
Hallo, ich suche jemanden der mir bei folgender Sache helfen kann: Ich habe eine Tabelle in der ich eine n:m Beziehung zw. 2 Schlüsseln habe ID -> Kodex ------------- 1 5 1 6 1 2 2 1 2 5 .... in dieser tabelle gibt es ca. 300000 einträge! Jetzt muss ich alle ID herausfiltern welche bestimmte kodexe hat wobei die kodexe und bzw. oder verknüpf sein können: Beispiel: - suche alle ID welche (kodex=5 oder kodex=6) und kodex=2 haben Ich benutzer MySQL 4.1 folglich habe ich es mit folgender SQL-Anweisung probiert: select distinct ID from (select distinct ID from tabelle where kodex=5 or kodex=6) a2 inner join (select distinct ID from tabelle where kodex=2) a1 on a2.ID=a1.ID und es funktioniert. Jedoch benötigt diese SQL-Anweisung bei den 300000 DS in tablle und den Joins viel zu viel Zeit! Ich warte ca. 2 min auf das Ergebnis. Für einen Suchmotor natürlich viel viel zu lange! Jetzt frage ich mich ob ich das event. mit Benutzervariablen machen kann damit die subselects nich jedesmal neu ausgeführt werden: select @liste1:=ID from tabelle where kodex=5 or kodex=6; selecg @liste1:=ID from tabelle where kodex=2; select distinct ID from tabelle where ID IN (@liste1] and ID IN (@liste2) ich bekam diese idee durch http://www.mysql.com/doc/en/Variables.html (fast ganz unten) jedoch funkioniert dies nicht! ich bekomme in @liste1 und @liste2 keine liste sondern alles leere DS (=NULL). Hat da jemand eine Idee wie ich das mit den Benutzervariabeln machen muss damit es funktioniert, bzw. kann mir jemand einen anderen Tipp geben wie ich die Sache schneller machen kann. Indexe usw. habe ich alles schon gesetzt. Die Tabelle wurde auch schon optimiert! danke Uli -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive