1

我有一个关于实现搜索功能的问题。我有一个表,其中包含 2 个用户 ID 和他们之间的交易详情(标题、日期、描述等)。我想允许用户通过这些条件中的任何一个来搜索交易(因此输入“Mike Salary 2013”​​将导致与 Mike 的交易从 2013 年开始,其中标题或描述包含单词“salary”)。

这可以通过加入所需的表、创建搜索字符串并按该字符串过滤每个输入单词来完成,但我担心的是,事务表的设计最终具有数百万行 - 所以从数据库端加入多个表 + 字符串操作可能很慢。

我的另一个想法是为搜索字符串创建单独的列 - 该字符串将在创建事务时创建,并包含所有必要的信息。问题是当用户决定更改他/她的名字时(用户可以在他们的“个人资料”页面中这样做)。分配给该用户的所有事务中的搜索字符串都将过时。

所以这是我的问题:是在用户更改姓名后搜索所有条目并更新搜索字符串更好(这会很昂贵,但用户不会经常更改姓名)还是放弃整个“搜索字符串列”的想法和用老式的连接来做吗?或者也许还有另一种选择?

谢谢你的帮助 :)

4

1 回答 1

0

您应该使用全文搜索。它实际上结合了你的两个想法。您可以在多个列和多个表上运行 FTS 查询。在幕后,FTS 使用索引,这类似于您的“搜索字符串列”的想法。

于 2013-09-02T19:01:24.360 回答