【发布时间】:2011-02-08 05:54:12
【问题描述】:
我的应用程序将为“听起来像”给定类型名称的英文名称提供建议列表。
查询需要优化并尽快返回结果。哪个选项最适合快速返回结果。 (或者你自己的建议,如果你有的话)
A.生成 Soundex 哈希并将其存储在“名称”表中,然后执行以下操作:(这样可以节省每次查询至少为我的数据库中的每一行生成 soundex 哈希吗?)
从 NameSoundex = Soundex('Ann') 的名称中选择名称
B.使用差异函数(这必须为表中的每个名称生成 soundex?)
从 Difference(name, 'Ann') >= 3 的名称中选择名称
C.简单对比
从其中 Soundex(name) = Soundex('Ann') 的名称中选择名称
选项 A 在我看来是最快的返回结果,因为它只为一个字符串生成 Soundex,然后与索引列“NameSoundex”进行比较
选项 B 应该比选项 A 提供更多结果,因为名称不必与 soundex 完全匹配,但可能会更慢
假设我的表可能包含数百万行,那么什么会产生最佳结果?
【问题讨论】:
-
看来您已经回答了自己的问题。选项 A 确实是最快的。选项 B 确实会产生更多的结果,而且会更慢。选项 C 将给您与选项 A 相同的结果,但也会(非常)慢。
标签: sql sql-server soundex