在 Postgres 中查找空格分隔的字符串

问题描述 投票:0回答:1

我在 postgres 中有一个

character varying
字段,其中包含一组由 1 个空格分隔的字符串。例如:

  • --> one two three <--
  • --> apples bananas pears <--

我放置

-->
<--
来显示字符串的开始和结束位置(它们不是存储的字符串本身的一部分)

我需要查询该字段以查明整个字符串是否包含某个单词(例如苹果)。可能的查询是

SELECT * FROM table WHERE thefield LIKE '%apple%'

但是它很糟糕并且不会缩放,因为 b 树索引仅在模式附加到字符串的开头时才缩放,而在我的情况下,搜索的字符串可以位于字段中的任何位置。

您建议如何解决该问题?

postgresql database-design indexing pattern-matching postgresql-performance
1个回答
5
投票

首先考虑数据库规范化

在使用当前设计时,支持使用 三元组索引 进行查询。那会很快。

参见:

© www.soinside.com 2019 - 2024. All rights reserved.