1

SQL Server: Index columns used in like?Reverse строка с ведущими подстановочные сканирование в Postgres

Я попытался с помощью метода запроса в ссылке выше с Postgres (улучшение 0.3ms), кажется, работает только с MySQL (в 10 раз быстрее).

MYSQL

User Load (0.4ms) SELECT * FROM users WHERE reverse_name LIKE REVERSE('%Anderson PhD') 
User Load (5.8ms) SELECT * FROM users WHERE name LIKE ('%Anderson Phd') 

POSTGRES

User Load (2.1ms) SELECT * FROM users WHERE reverse_name LIKE REVERSE('%Scot Monahan') 
User Load (2.5ms) SELECT * FROM users WHERE name LIKE '%Scot Monahan' 

ли некоторые погуглите, но не мог понять, как я совершенно новой для DBS. Может ли кто-нибудь объяснить, почему это происходит?

ответ

0

Для поддержки спички префикса в Postgres для столбцов типа символов вам необходим либо индекс с соответствующим классом оператора: text_pattern_ops для текста и т.д. (Если ваш DB не работает с локал «C», которая является редкостью.)

Или вы используете индекс триграммы для поддержки любой шаблон - тогда вам больше не нужен «обратный» трюк.

Подробности в этом связанный с этим вопрос:

Вы увидите серьезное улучшение производительности для таблиц доли не имеет тривиальное размер, как только индекс может быть использован для запрос. Посмотрите план запроса с EXPLAIN.

+0

Спасибо Эрвин! Используемые триграммы, и это сработало! –