SQL Server: Index columns used in like?
我已经尝试使用上面链接中的查询方法与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')
海报
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'
做了一些谷歌搜索,但不能完全理解,因为我是相当新的数据库。有人能解释为什么会发生这种情况吗?
1条答案
按热度按时间4xrmg8kj1#
要在Postgres中支持字符类型列的前缀匹配,您需要一个带有合适运算符类的索引:
text_pattern_ops
(用于文本等)(除非您使用“C”语言环境...)或者你使用一个三元组索引来支持 * 任何 * 模式--那么你就不再需要“反向”技巧了。
请参阅:
一旦索引可以用于查询,您将看到对于非平凡大小的表的 * 巨大 * 性能改进。