Hallo zusammen,
mein Problem ist folgendes:
Ich habe eine Tabelle 'produkt' mit den Spalten 'name' und 'kategorie'.
Da ein Produkt mehreren Kategorien angehören kann stehen in der Spalte 'kategorie' mehrere Kategorien durch ein Semikolon voneinander getrennt.
Die Daten eines Produktes sind also etwa:
name: Bär
kategorie: bunt;klein
liefert mir also die Produkte der Kategorie 'klein'.
Jetzt wollte ich auf die Spalte 'kategorie' zwecks Perfomance-Steigerung einen Index legen.
Der wird aber nicht verwendet wegen des ersten % in '%klein%'.
Also habe ich die Tabellen-Struktur verändert.
Jetzt hat die Tabelle die Spalten 'name', 'kategorie1' und 'kategorie2',
Ein Produkt sieht jetzt etwa so aus:
name: Bär
kategorie1: bunt
kategorie2: klein
liefert mir jetzt die Produkte der Kategorie 'klein'.
Ich habe einen Index auf 'kategorie1', einen auf 'kategorie2' und einen auf (kategorie1 kategorie2) gelegt.
Wieder wird kein Index verwendet.
Daher meine Frage:
Wie kann ich erreichen, dass ein Produkt mehreren Kategorien angehören kann und beim select ein Index verwendet wird.
Nätürlich möchte ich nur ein einziges select hierfür verwenden.
Danke schon mal
mein Problem ist folgendes:
Ich habe eine Tabelle 'produkt' mit den Spalten 'name' und 'kategorie'.
Da ein Produkt mehreren Kategorien angehören kann stehen in der Spalte 'kategorie' mehrere Kategorien durch ein Semikolon voneinander getrennt.
Die Daten eines Produktes sind also etwa:
name: Bär
kategorie: bunt;klein
Code:
select name from produkt where kategorie like '%klein%';
Jetzt wollte ich auf die Spalte 'kategorie' zwecks Perfomance-Steigerung einen Index legen.
Der wird aber nicht verwendet wegen des ersten % in '%klein%'.
Also habe ich die Tabellen-Struktur verändert.
Jetzt hat die Tabelle die Spalten 'name', 'kategorie1' und 'kategorie2',
Ein Produkt sieht jetzt etwa so aus:
name: Bär
kategorie1: bunt
kategorie2: klein
Code:
select name from produkt where kategorie1 = 'klein' or kategorie2 = 'klein';
Ich habe einen Index auf 'kategorie1', einen auf 'kategorie2' und einen auf (kategorie1 kategorie2) gelegt.
Wieder wird kein Index verwendet.
Daher meine Frage:
Wie kann ich erreichen, dass ein Produkt mehreren Kategorien angehören kann und beim select ein Index verwendet wird.
Nätürlich möchte ich nur ein einziges select hierfür verwenden.
Danke schon mal
Kommentar