sql-server - 如何有效地支持 LIKE %Query%
问题描述
我正在一个项目中工作,我在 SQL 表中有数百万条记录。表架构可以是例如:
Site Id varchar Primary Key
Site Name varchar
Site Url varchar
Owner varchar
Details varchar
...
现在的场景是在 UX 上提供对站点名称和站点 URL 的搜索。例如说这里是 UX 上显示的网站:
**Site Name Site Url Site Owner**
NishantBlog1 https://baseurl.com/nisblog1 Nishant Saxena
NishantBlog2 https://baseurl.com/nisblog2 Nishant Saxena
RamBlog3 https://baseurl.com/nisblog3 Nishant Saxena
现在假设有人搜索“is”,那么我们需要提供所有上述三个站点,因为每个 URL 都包含“is”。
我们当然可以LIKE %is%
在这个例子中支持它,但它不会那么有效,因为它会使用索引扫描而不是索引搜索,原因很明显,即使在 URL 上创建索引也是如此。有没有办法提高性能?
我在它周围搜索并找到了SQL 全文索引,但它在我们的场景中不起作用,因为它可以在nisblog3
搜索类型中工作,但不适用于“is”,因为这里没有分隔符。
请注意,我还查看了SQL 物化路径,但即使它有助于提高性能(未测试),我也无法使用它,因为它会以指数方式增加表的大小。如果我错了,请纠正我。
由于大尺寸和其他问题,我无法在内存中尝试并注意弹性搜索不是我们的选择。
让我知道我在这里能做的最好的事情是什么。Web 服务是用 C# 编写的,我也可以使用存储过程。
解决方案
推荐阅读
- angular - 如何在 Angular 6 中监听脏/原始状态
- javascript - 如何从 JS 中的字符串解析对象(它是控制台记录的)?
- gitlab - GitLab CI 超时
- python - Tkinter 包布局:弹力带类比
- android - 请选择安卓sdk
- python - 使用具有固定参数的 scipy.otimize.least_squares 时更改函数后的 TypeError (Python)
- php - 使用 Google 电子表格 API 为不同用户制作 token.json 与 credentials.json 的程序是什么?
- python - self.ParseError('字符串缺少结束引号:%r' % (text,))
- excel - Excel:如何找到供需之间的交点(平衡点)?
- katalon-studio - Katalon Studio 中的 If/Else 语句