Heim >Datenbank >MySQL-Tutorial >Wie kann ich die Datenbankindizierung für LIKE-Abfragen mit führenden Platzhaltern optimieren?

Wie kann ich die Datenbankindizierung für LIKE-Abfragen mit führenden Platzhaltern optimieren?

Barbara Streisand
Barbara StreisandOriginal
2024-12-13 02:12:101003Durchsuche

How Can I Optimize Database Indexing for LIKE Queries with Leading Wildcards?

Indizierungsstrategien für LIKE-Abfragen

Beim Umgang mit LIKE-Abfragen ist es wichtig, die Einschränkungen von B-Tree-Indizes zu verstehen. Während sich B-Tree-Indizes dadurch auszeichnen, dass sie Vergleiche mit Operatoren wie =, > und BETWEEN beschleunigen, stehen sie bei LIKE-Abfragen, die mit Platzhalterzeichen beginnen, vor Herausforderungen. In solchen Szenarien verringern sich die potenziellen Vorteile der Indizierung.

Berücksichtigung Ihrer spezifischen Abfrage:

SELECT name, usage_guidance, total_used_num
FROM tags
WHERE
 ( name LIKE CONCAT('%', ?, '%') OR
   usage_guidance LIKE CONCAT(?, '%') )
 AND name NOT IN ($in)
ORDER BY name LIKE CONCAT('%', ?, '%') DESC, name ASC
LIMIT 6

Beide LIKE-Bedingungen beginnen mit Platzhalterzeichen, was die Verwendung von B-Tree-Indizes unpraktisch macht. Einen Hoffnungsschimmer gibt es allerdings mit der zweiten LIKE-Bedingung, die nicht mit einer Wildcard beginnt. Um die Abfrageleistung zu verbessern, sollten Sie die Erstellung eines zusammengesetzten Index für die Spalten „usage_guidance“ und „name“ in Betracht ziehen. Dies ermöglicht teilweise Übereinstimmungen bei „usage_guidance“ und eine schnellere Sortierung basierend auf dem Namen.

CREATE INDEX idx_tags ON tags (usage_guidance, name);

Obwohl diese Indizierungsstrategie nicht alle Leistungsprobleme auf magische Weise beseitigen wird, beseitigt sie teilweise die Einschränkungen von LIKE-Abfragen und sollte die Abfragegeschwindigkeit spürbar verbessern . Wenn Sie bei dieser Abfrage auf zusätzliche Herausforderungen stoßen, kann die Bereitstellung der Tabellenstruktur mit Beispieldaten und der erwarteten Ausgabe zu weiteren Optimierungen führen.

Das obige ist der detaillierte Inhalt vonWie kann ich die Datenbankindizierung für LIKE-Abfragen mit führenden Platzhaltern optimieren?. 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