sql - 如何加速 SQL 中的 LIKE 操作(最好是 Postgres)

标签 sql postgresql

我们有一个包含 200 万个条目的 Postgres 数据库。我们尝试使用等式搜索,它立即起作用 (SELECT * FROM a WHERE b = "asd")

但我们希望“LIKE '%asd%'”操作也快。我们如何做到这一点?

最佳答案

通常像“%something%”是不可索引的。

但是。

有几个问题:

  1. 你绝对确定你需要完整的子串匹配吗?也许你可以用“任何单词(空格分隔)以某物开头”来做? - 它接近 %something% 并且绝对可索引。
  2. 您可能想要使用全文搜索,但它们通常适用于单词,因此如果您确实确实需要子字符串搜索,它就更不适合您的解决方案了。
  3. 您可以尝试使用三元组进行搜索(contrib 中的模块 pg_trgm)
  4. 您也可以尝试 wildspeed , 但要注意它 makes huge indexes .

关于sql - 如何加速 SQL 中的 LIKE 操作(最好是 Postgres),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1540590/

相关文章:

sql - 如何在临时表中强制执行 key 唯一性?

mysql - SQLite 在 WHERE 中传递多个参数

Postgresql,将文本作为日期时间进行比较

sql - 动态省略 limit 子句

python - pyparsing,每个,结果名称

sql - SQLite3中使用除法的计算字段

ruby-on-rails - Rails Redis 排行榜

sql - 与 UNION SQL 查询相反

java - 使用 jOOQ 和 PostgreSQL serial 和 RETURNING 返回一个值

entity-framework - EF6 + Postgres 关系 dbo.AspNetUsers 不存在