我正在开发 ASP.NET MVC 应用程序。该应用程序有 200 个用户使用。这些
用户不断地(每 5 分钟)从 100,000 个项目的列表中搜索一个项目(该列表每个月都会增加 1-2%)。此 100,000 个项目的列表存储在 SQL Server 表中。
该搜索是通配符搜索
eg:
Select itemCode, itemName, ItemDesc
from tblItems
Where itemName like '%SearchWord%'
搜索需要非常快,因为主要业务依赖于搜索和选择项目。
我想知道如何获得最佳性能。搜索结果必须立即出现。
我尝试过的 -
-
我尝试将全部 100,000 条记录预加载到内存缓存中,然后从内存缓存中读取。我试图避免每次搜索时都调用 SQL Server。
这需要很多时间。每次用户搜索某个项目时,我们都会从内存缓存中检索 100,000 条记录,然后进行搜索。这比直接 SQL 搜索花费的时间几乎多 2-3 倍。
-
我尝试在 SQL Server 表上进行直接搜索,但将结果限制为一次仅 50 条记录(使用前 50 条)
这似乎没问题,但仍远未达到我们寻求的性能
我想听听可能的解决方案以及任何文章/代码的链接。
提前致谢
运行 SQL Profiler 并执行调整配置文件。这将对针对数据库执行的索引提出建议。
另外,像下面这样的查询也值得一试。
SELECT *
FROM
(
SELECT ROW_NUMBER() OVER ( ORDER BY ColumnA) AS RowNumber, itemCode, itemName, ItemDesc
FROM tblItems
WHERE itemName LIKE '%FooBar%'
) AS RowResults
WHERE RowNumber >= 1 AND RowNumber < 50
ORDER BY RowNumber
编辑:更新查询以反映您的真实情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)