Heim >Datenbank >MySQL-Tutorial >Wie optimiert man Abfragen für durch Kommas getrennte Spalten in Datenbanken?

Wie optimiert man Abfragen für durch Kommas getrennte Spalten in Datenbanken?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-30 15:03:03258Durchsuche

How to Optimize Queries for Comma-Separated Columns in Databases?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn