我们有一个包含 200 万个条目的 Postgres 数据库。我们尝试使用等式搜索,它立即起作用 (SELECT * FROM a WHERE b = "asd")
但我们希望“LIKE '%asd%'”操作也快。我们如何做到这一点?
最佳答案
通常像“%something%”是不可索引的。
但是。
有几个问题:
- 你绝对确定你需要完整的子串匹配吗?也许你可以用“任何单词(空格分隔)以某物开头”来做? - 它接近 %something% 并且绝对可索引。
- 您可能想要使用全文搜索,但它们通常适用于单词,因此如果您确实确实需要子字符串搜索,它就更不适合您的解决方案了。
- 您可以尝试使用三元组进行搜索(contrib 中的模块 pg_trgm)
- 您也可以尝试 wildspeed , 但要注意它 makes huge indexes .
关于sql - 如何加速 SQL 中的 LIKE 操作(最好是 Postgres),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1540590/