Optimieren von Abfragen für durch Kommas getrennte Spalten
Datenbanktabellen enthalten häufig Spalten mit durch Kommas getrennten Wertelisten, was bei der Abfrage nach bestimmten Werten zu Herausforderungen führt Werte. Betrachten Sie eine Tabelle mit einer Spalte „KATEGORIEN“ im folgenden Format:
ID | CATEGORIES --------------- 1 | c1 2 | c2,c3 3 | c3,c2 4 | c3 5 | c4,c8,c5,c100
Um nach bestimmten Kategorien zu suchen, können Sie sich zunächst für LIKE-Anweisungen entscheiden:
SELECT id FROM table WHERE categories LIKE '%c2%'; -- Returns rows 2 and 3
Allerdings LIKE-Anweisungen kann für durch Kommas getrennte Spalten ineffizient sein. Die FIND_IN_SET()-Funktion von Oracle scheint eine geeignete Alternative zu sein, ist jedoch in Oracle 10g nicht verfügbar.
Ein optimalerer Ansatz ist die Verwendung von LIKE mit geeigneten Platzhaltern:
SELECT * FROM YourTable WHERE ',' || CommaSeparatedValueColumn || ',' LIKE '%,SearchValue,%'
Diese Abfrage Fügt Kommas um den Suchwert hinzu, um genaue Übereinstimmungen sicherzustellen. Aufgrund der Verwendung von LIKE kann es jedoch immer noch langsam sein.
Eine bessere Lösung besteht darin, die Daten in separate Tabellen mit Querverknüpfung umzustrukturieren, um die Einschränkungen durch Kommas getrennter Spalten zu vermeiden und so die Abfrageleistung erheblich zu verbessern.
Das obige ist der detaillierte Inhalt vonWie optimiert man Abfragen für durch Kommas getrennte Spalten in Datenbanken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!