Eddie: Kann ich diese MySQL-Anfrage optimieren?

Beitrag lesen

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.