背景:我有一个包含 500 万个地址条目的表格,我想搜索不同的字段(客户姓名、联系人姓名、邮编、城市、电话...),最多 8 个字段。数据相当稳定,一天最多修改50次,所以几乎只有读权限。
用户不应该提前告诉我他在搜索什么,我还希望支持组合搜索(搜索词的 AND 连接)。例如,“lincoln+lond”应在任何搜索字段中搜索包含两个搜索词的所有记录,以及以任何词开头的条目(如本例中的“London”)。
问题:现在我需要为这个搜索表选择一个索引策略。(附带说明:我正在尝试实现亚秒级响应时间,最差响应时间应该是 2 秒。)在性能方面更好的是:
- 从所有可查询的列中做一个组合索引(需要 2 个,因为达到了 900 字节的索引限制)
- 在每个可查询列上放置单个索引
- 在可查询列上建立全文索引并使用全文查询
我放弃了第 1 点,因为它似乎没有任何优势(索引使用会受到限制,并且不会有“索引搜索”,因为并非所有字段都适合一个索引)。
问题:现在,我应该使用多个单索引变体还是应该使用全文索引?有没有其他方法可以实现上述功能?