【发布时间】:2020-01-17 07:39:35
【问题描述】:
我存储了一些字符串,例如:Barcelona、Real Madrid、Athletico。我的程序需要搜索这个的完全匹配,
例如:
Barcelona -> true
Real Madrid -> true
Real M -> false
Athletic -> false
我认为将其内联存储在 text/varchar 字段中,例如(只是粗鲁的例子):
|Barcelona|Real Madrid|Athletico|,然后只做LIKE %|Real Madrid|%
我不想使用 trigram 之类的繁重东西,只使用内联字符串,但我应该使用哪个索引系统?
谢谢
【问题讨论】:
-
你能说得更具体点吗?您想一次搜索其中一个字符串的出现还是一次搜索多个?如果是后者:AND 或 OR?
-
每次选择只有一个:SELECT * FROM db WHERE column LIKE '%|Real Madrid|%' LIMIT 1
-
不要不将多个分隔值存储在单个列中。阅读数据库规范化。如果你真的认为你必须对数据模型进行反规范化并违反第一范式,那么至少使用一个数组。
-
谢谢建议 :)
标签: database postgresql indexing