首页 > 解决方案 > 如何有效地支持 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# 编写的,我也可以使用存储过程。

标签: sql-server

解决方案


推荐阅读