Kann die LIKE-Anweisung so optimiert werden, dass keine vollständigen Tabellenscans durchgeführt werden?

Ich möchte einen Teilbaum aus einer Tabelle über einen Baumpfad erhalten.

daspath Spalte speichert Zeichenfolgen wie:

foo/
foo/bar/
foo/bar/baz/

Wenn ich versuche, alle Datensätze auszuwählen, die mit einem bestimmten Pfad beginnen:

EXPLAIN QUERY PLAN SELECT * FROM f WHERE path LIKE "foo/%"

es sagt mir, dass der Tisch gescannt wird, obwohl diepath Spalte ist indiziert :(

Kann ich LIKE dazu bringen, den Index zu verwenden und die Tabelle nicht zu scannen?

Ich habe einen Weg gefunden, mit Closure Table das zu erreichen, was ich will, aber es ist schwieriger zu warten und das Schreiben ist extrem langsam ...

Antworten auf die Frage(2)

Ihre Antwort auf die Frage