Hallo allerseits,
folgende MySQL-Anfrage scheint zu kompliziert zu sein, die Datenbank braucht ewig dafür:
=====================================
SELECT DISTINCT c.*
FROM contentTable c, rel_content_category1 rel1, rel_content_category2 rel2
WHERE
(
c.id = rel1.contentID
AND
(rel1.catID = 'ki' OR
rel1.catID = 'fm' OR
rel1.catID = 'nr')
)
OR
(
c.id = rel2.contentID
AND
rel2.catID = '6'
)
Dabei ist das ja eigentlich garnich so kompliziert!
Teile ich die Anfrage in zwei Anfragen, geht es ruckzuck:
=====================================
SELECT DISTINCT c.*
FROM contentTable c, rel_content_category1 rel1, rel_content_category2 rel2
WHERE
c.id = rel1.contentID
AND
(rel1.catID = 'ki' OR
rel1.catID = 'fm' OR
rel1.catID = 'nr')
SELECT DISTINCT c.*
FROM contentTable c, rel_content_category1 rel1, rel_content_category2 rel2
WHERE
c.id = rel2.contentID
AND
rel2.catID = '6'
Die in der WHERE-Klausel verwendeten Attribute haben alle einen Index, außerdem sind die Tabellen garnicht so riesig:
contentTable c: 500 Einträge
rel_content_category1 rel1: 7000 Einträge
rel_content_category1 rel2: 500 Einträge
Ich versteh das nicht? Wo liegt der Haken?
Danke für eure Hilfe,
Eddie
Old men and far travelers may lie with authority.