sql-server - 组合索引与多个单一索引与全文索引的查询性能

标签 sql-server performance indexing sql-server-2000 query-optimization

背景: 我有一个包含 500 万个地址条目的表,我想在其中搜索不同的字段(客户姓名、联系人姓名、 zip 、城市、电话......),向上到 8 个字段。数据相当稳定,一天最多 50 次更改,所以几乎只有读取权限。

用户不应该提前告诉我他在搜索什么,我也希望支持组合搜索(搜索词的 AND 串联)。例如,“lincoln+lond”应搜索包含任何搜索字段中的搜索词的所有记录,以及以任何词开头的条目(如本例中的“London”)。

问题:现在我需要为这个搜索表选择一个索引策略。 (附带说明:我正在努力实现亚秒级响应时间,最差响应时间应该是 2 秒。)在性能方面有什么更好的地方:

  1. 对所有可查询列进行组合索引(需要其中 2 个,因为达到了 900 字节的索引限制)
  2. 在每个可查询列上放置单个索引
  3. 对可查询列做全文索引,使用全文查询

我放弃第 1 点,因为它似乎没有任何优势(索引使用将受到限制并且不会有“索引搜索”,因为并非所有字段都适合一个索引)。

问题:现在,我应该使用多个单一索引变体还是应该使用全文索引?是否有其他方法可以实现上述功能?

最佳答案

尝试两者,看看哪个在您的系统上更快。数据库优化几乎没有硬性规定,这实际上取决于您的环境。

关于sql-server - 组合索引与多个单一索引与全文索引的查询性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/702469/

相关文章:

ios - 将 indexpath.row 转移到新的 View Controller ?

MySQL 索引 eq 到 Key?

sql - 查找每个客户的第二个约会日期

javascript - 监控和调试 Angular 组件的性能

sql - 从 SQL Server 中的子查询值或其他聚合函数获取平均值

jquery - 如何加快 $.offset() 速度?

database - 用于数据库操作的 Windows 文件系统有多快?

python - 删除嵌套列表中的列时列表分配索引超出范围

sql - UNION ALL 之后的 CTE

SQL - 使用 IN (@Variable_CommaDelimitedListOfIDS) 的带有 Select 语句的存储过程