【发布时间】:2013-09-02 18:42:42
【问题描述】:
我有一个关于实现搜索功能的问题。我有一个表,其中包含 2 个用户 ID 和它们之间的交易详情(标题、日期、描述等)。我希望允许用户通过这些条件中的任何一个来搜索交易(因此输入“Mike Salary 2013”将导致与 Mike 的交易从 2013 年开始,其中标题或描述包含单词“salary”)。
这可以通过加入所需的表、创建搜索字符串并按该字符串过滤每个输入词来完成,但我担心的是,事务表被设计为最终有数百万行 - 所以加入多个表 + 字符串操作从数据库方面可能会很慢。
我的另一个想法是为搜索字符串创建单独的列 - 该字符串将在创建交易时创建,并包含所有必要的信息。问题是当用户决定更改他/她的名字时(用户可以在他们的“个人资料”页面中这样做)。分配给该用户的所有事务中的搜索字符串都将过时。
所以这是我的问题:是在用户更改姓名后搜索所有条目并更新搜索字符串更好(代价高昂,但用户不会经常更改姓名)还是放弃整个“搜索字符串”列“想法并使用老式连接来实现?或者也许还有其他选择?
感谢您的帮助:)
【问题讨论】:
标签: sql sql-server asp.net-mvc search