У меня есть одна таблица "префиксов", содержащая префиксы пути, например a/b/c/
и еще одна таблица «ключей», содержащая абсолютные пути, например, a/b/c/foo.txt
.
Я присоединяюсь ко второму по отношению к первому (концептуально) "key.value начинается с prefix.value".
Изначально я пытался
keys.value like prefixes.value || '%'
... но это было проблематично для префиксов, содержащих символы, которые имеют значение для оператора «like», например, _
, %
и т. Д.
Я остановился на:
substring(keys.value, length(prefixes.value)) = prefixes.value
... но это значительно медленнее. В других публикациях предлагается использовать regexp_replace для экранирования специальных символов в префиксе, после чего следует использовать оператор like с завершающим %
, но я не могу представить, что это улучшение производительности, учитывая regexp_replace ().
Есть ли более чистый / быстрый / лучший способ сделать это?