首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL文本搜索速度

SQL文本搜索速度
EN

Stack Overflow用户
提问于 2020-08-25 19:34:09
回答 1查看 50关注 0票数 0

我正在尝试提高MSSQL数据库中的文本搜索过程的速度。

该过程查询多个表以搜索任何匹配的记录(属性、用户、业务等)。例如,users表有400,000多行,我们正在搜索6个nvarchar列,以满足指定的搜索条件。此外,如果有空格,我们将在搜索条件中分别搜索每个单词,以提高结果的准确性。相同的过程搜索包含超过120,000行的属性表,并查询单个地址列。

我已经实现了对适当的表和列的全文搜索,但是搜索可能需要7到10秒才能返回结果。理想情况下,我希望这是在2秒以下。

这是我用来查找用户的查询的一个示例:

代码语言:javascript
复制
SELECT
    u.[UserId]
FROM [mgr].[Users] u
LEFT JOIN [mgr].[UserAddresses] ua ON ua.[UserId] = u.[UserId]
LEFT JOIN [mgr].[vAddress] ad ON ad.[AddressId] = ua.[AddressId]
WHERE CONTAINS((u.[Forename], u.[Surname], u.[Email], u.[Phone], u.[WPhone], u.[MPhone]), @SearchCriteria)
OR CONTAINS(ad.[FullAddress], @SearchCriteria);

我能做些什么来提高速度吗?我们预计这些表中的数据量将快速增长,因此任何有助于提高可伸缩性的帮助都将是巨大的。

EN

回答 1

Stack Overflow用户

发布于 2020-08-25 19:36:12

我想知道将它分成两个查询会不会更快:

代码语言:javascript
复制
SELECT u.[UserId]
FROM [mgr].[Users] u
WHERE CONTAINS((u.[Forename], u.[Surname], u.[Email], u.[Phone], u.[WPhone], u.[MPhone]), @SearchCriteria)
UNION  -- on purpose to remove duplicates
SELECT ua.[UserId]
FROM [mgr].[UserAddresses] ua ON  = u.[UserId] JOIN
     [mgr].[vAddress] ad
     ON ad.[AddressId] = ua.[AddressId]
WHERE CONTAINS(ad.[FullAddress], @SearchCriteria);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63577952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档