通过 sql 表中的 100,000 条记录进行通配符搜索的最佳优化技术是什么

2024-03-02

我正在开发 ASP.NET MVC 应用程序。该应用程序有 200 个用户使用。这些 用户不断地(每 5 分钟)从 100,000 个项目的列表中搜索一个项目(该列表每个月都会增加 1-2%)。此 100,000 个项目的列表存储在 SQL Server 表中。

该搜索是通配符搜索

eg:

Select itemCode, itemName, ItemDesc 
from tblItems
Where itemName like '%SearchWord%'

搜索需要非常快,因为主要业务依赖于搜索和选择项目。

我想知道如何获得最佳性能。搜索结果必须立即出现。

我尝试过的 -

  1. 我尝试将全部 100,000 条记录预加载到内存缓存中,然后从内存缓存中读取。我试图避免每次搜索时都调用 SQL Server。

    这需要很多时间。每次用户搜索某个项目时,我们都会从内存缓存中检索 100,000 条记录,然后进行搜索。这比直接 SQL 搜索花费的时间几乎多 2-3 倍。

  2. 我尝试在 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(使用前将#替换为@)

通过 sql 表中的 100,000 条记录进行通配符搜索的最佳优化技术是什么 的相关文章

  • 将处理后的图形绘制到另一个图形中

    我想将一个经过处理的图形绘制到另一个图形中 I have two graphics var gHead Graphics FromImage h var gBackground Graphics FromImage b Transform
  • 在 OpenCL 中将函数作为参数传递

    是否可以在 OpenCL 1 2 中将函数指针传递给内核 我知道可以用C实现 但不知道如何在OpenCL的C中实现 编辑 我想做这篇文章中描述的同样的事情 在 C 中如何将函数作为参数传递 https stackoverflow com q
  • 捕获 foreach 条件中抛出的异常

    我有一个foreach在 foreach 本身的条件下循环期间中断的循环 有没有办法try catch抛出异常然后继续循环的项 这将运行几次 直到异常发生然后结束 try foreach b in bees exception is in
  • Blazor 与 Razor

    随着 Blazor 的发明 我想知道这两种语言之间是否存在显着的效率 无论是在代码创建方面还是在代码的实际编译 执行方面 https github com SteveSanderson Blazor https github com Ste
  • 通信对象 System.ServiceModel.Channels.ServiceChannel 不能用于通信

    通信对象System ServiceModel Channels ServiceChannel 无法用于通信 因为它处于故障状态 这个错误到底是什么意思 我该如何解决它 您收到此错误是因为您让服务器端发生 NET 异常 并且您没有捕获并处理
  • Linux TUN/TAP:无法从 TAP 设备读回数据

    问题是关于如何正确配置想要使用 Tun Tap 模块的 Linux 主机 My Goal 利用现有的路由软件 以下为APP1和APP2 但拦截并修改其发送和接收的所有消息 由Mediator完成 我的场景 Ubuntu 10 04 Mach
  • ZLIB 解压缩

    我编写了一个小型应用程序 该应用程序应该解压缩以 gzip deflate 格式编码的数据 为了实现这一点 我使用 ZLIB 库 使用解压缩功能 问题是这个功能不起作用 换句话说 数据不是未压缩的 我在这里发布代码 int decompre
  • Xamarin Android:获取内存中的所有进程

    有没有办法读取所有进程 而不仅仅是正在运行的进程 如果我对 Android 的理解正确的话 一次只有一个进程在运行 其他所有进程都被冻结 后台进程被忽略 您可以使用以下代码片段获取当前正在运行的所有 Android 应用程序进程 Activ
  • 禁用 LINQ 上下文的所有延迟加载或强制预先加载

    我有一个文档生成器 目前包含约 200 个项目的查询 但完成后可能会超过 500 个 我最近注意到一些映射表示延迟加载 这给文档生成器带来了一个问题 因为它需要根据生成的文档来访问所有这些属性 虽然我知道DataLoadOptions可以指
  • 单元测试失败,异常代码为 c0000005

    我正在尝试使用本机单元测试项目在 Visual Studios 2012 中创建单元测试 这是我的测试 TEST METHOD CalculationsRoundTests int result Calculations Round 1 0
  • 通过不同 DLL 或 EXE 中的指针或引用访问 STL 对象时发生访问冲突

    我在使用旧版 VC6 时遇到以下问题 我只是无法切换到现代编译器 因为我正在处理遗留代码库 http support microsoft com kb 172396 http support microsoft com kb 172396
  • 32位PPC rlwinm指令

    我在理解上有点困难rlwinmPPC 汇编指令 旋转左字立即然后与掩码 我正在尝试反转函数的这一部分 rlwinm r3 r3 0 28 28 我已经知道什么了r3 is r3在本例中是一个 4 字节整数 但我不确定这条指令到底是什么rlw
  • Fluent NHibernate 日期时间 UTC

    我想创建一个流畅的 nhibernate 映射来通过以下方式映射 DateTime 字段 保存时 保存 UTC 值 读取时 调整为本地时区值 实现此映射的最佳方法是什么 就我个人而言 我会将日期存储在 UTC 格式的对象中 然后在读 写时在
  • 如何在 GCC 5 中处理双 ABI?

    我尝试了解如何克服 GCC 5 中引入的双重 ABI 的问题 但是 我没能做到 这是一个重现错误的非常简单的示例 我使用的GCC版本是5 2 如您所见 我的主要函数 在 main cpp 文件中 非常简单 main cpp include
  • 过度使用委托对性能来说是一个坏主意吗? [复制]

    这个问题在这里已经有答案了 考虑以下代码 if IsDebuggingEnabled instance Log GetDetailedDebugInfo GetDetailedDebugInfo 可能是一个昂贵的方法 因此我们只想在调试模式
  • 为什么 Ajax.BeginForm 在 Chrome 中不起作用?

    我正在使用 c NET MVC2 并尝试创建一个 ajax 表单来调用删除数据库记录 RemoveRelation 的方法 删除记录的过程正在按预期进行 删除记录后 表单应调用一个 JavaScript 函数 从视觉效果中删除该记录 Rem
  • Swagger 为 ASP.CORE 3 中的字典生成错误的 URL

    当从查询字符串中提取的模型将字典作为其属性之一时 Swagger 会生成不正确的 URL 如何告诉 Swagger 更改 URL 中字典的格式或手动定义输入参数模式而不自动生成 尝试使用 Swashbuckle 和 NSwag 控制器 pu
  • 从类模板参数为 asm 生成唯一的字符串文字

    我有一个非常特殊的情况 我需要为类模板中声明的变量生成唯一的汇编程序名称 我需要该名称对于类模板的每个实例都是唯一的 并且我需要将其传递给asm关键字 see here https gcc gnu org onlinedocs gcc 12
  • 如何确定母版页中正在显示哪个子页?

    我正在母版页上编写代码 我需要知道正在显示哪个子 内容 页面 我怎样才能以编程方式做到这一点 我用这个 string pageName this ContentPlaceHolder1 Page GetType FullName 它以 AS
  • 如何创建向后兼容 Windows 7 的缩放和尺寸更改每显示器 DPI 感知应用程序?

    我是 WPF 和 DPI 感知 API 的新手 正在编写一个在 Windows 7 8 1 和 10 中运行的应用程序 我使用具有不同每个显示器 DPI 设置的多个显示器 并且有兴趣将我的应用程序制作为跨桌面配置尽可能兼容 我已经知道可以将

随机推荐

  • R 加载错误 - libproj.so.13:无法打开共享对象文件:没有这样的文件或目录

    我正在尝试安装 CRANs 群体遗传学包希尔夫统计 https cran r project org web packages hierfstat hierfstat pdf 但是 libproj so 13 打印出以下错误 gt inst
  • 垂直拉伸列表项目

    我正在构建一个phonegap应用程序 我有以下内容 ul li One li li Two li li Three li li Three br a Half li ul 我怎样才能使 li 元素垂直拉伸并填充页面的整个高度 因为这需要是
  • 如何在企业架构师的下拉列表中添加多个标记值?

    我正在使用企业架构师 我希望在下拉列表中显示多个值作为标记值 我只能为标记值赋予一个值 但我不知道如何为一系列选择执行此操作 我在 sparx 系统的用户指南中找不到帮助 也许我没有找到它 有什么帮助吗 谢谢 创建下拉标记值列表企业架构师
  • Xamarin.iOS 在应用程序未关闭时处理推送通知

    如果应用程序在后台使用该方法 我设法处理推送通知didReceiveRemoteNotification 如果应用程序位于前台且未关闭 是否有办法处理推送通知 谢谢 你实施了吗用户通知 https developer apple com d
  • iTunesConnect 要求我提交“年终自我资格报告”

    当我尝试提交我的应用程序进行测试时 出现了此问题 如果您使用 ATS 或调用 HTTPS 请注意 您需要提交年终自我分类报告 给美国政府 答案是肯定的 我确实会调用 https 来与我的 API 对话 我具体应该怎么做才能满足这个要求呢 什
  • 在 Django 中运行 Discord 机器人

    我想要一个访问 Django 数据库的不和谐机器人 一个明显的解决方案是有两个单独的脚本 我想知道是否有办法使不和谐机器人作为应用程序或其他东西成为 Django 的一部分 您可以在单独的线程中运行不和谐机器人 并且还可以相互设置属性 同样
  • 如何将已修补的 GNU readline 库正确链接到所有现有程序?

    我最初的问题是 我想要一种方法来区分在 vi 模式下使用 bash 时是处于 vi 命令模式还是 vi 插入模式 据我了解 从 GNU readline 7 0 开始 有一种方法可以在命令提示符中设置指示器 然而 我想要的是改变光标的形状
  • 有没有办法阻止 SqlPackage.exe 在部署脚本中设置默认文件组?

    我们正在使用 Sql Server 数据库项目通过 SqlPackage exe 从 DacPac 创建部署脚本 我们在不同的环境中设置了不同的 SQL Server 文件组 部署时 我们排除文件组 因为我们希望在默认文件组中创建对象 在数
  • 使用 Numba 处理 pandas DataFrame 时间序列的有效方法

    我有一个包含 1 500 000 行的 DataFrame 这是我从 QuantQuote com 购买的一分钟级别的股市数据 开盘价 最高价 最低价 收盘价 交易量 我正在尝试对股票市场交易策略进行一些自制的回测 直接使用 python
  • Json和Xml序列化,哪个性能更好?

    我必须在文件中存储一些配置信息 在 C 代码中 配置数据按类表示 在文件中我将以 json 或 xml 格式保存此类 那么 序列化json和xml哪个性能最好呢 好吧 我没有猜测 而是有了答案 这是测试程序 class Program st
  • 适合初学者的 SAML 简单示例

    我是 SAML v2 0 技术的初学者 我获得了理论知识 但我在 Google 上没有找到任何示例 任何人都可以为我提供简单的 SAML for v2 0 的分步示例 到目前为止我已经完成了理论部分 即它支持单点登录 and我也了解服务提供
  • 如何让 Wicket 7 与 Java 8 中的 java.time 配合使用?

    我有很多 bean 并且都使用 LocalDate 和 LocalDateTime Wicket 中的 DateTextField 和所有其他小部件 如 DatePicker 仅适用于 java util Date 有什么办法可以injec
  • 从字符串列表中找到与给定字符串匹配的最佳子集

    我有一根绳子 s mouse 和一个字符串列表 sub strings m o se e 我需要找出与 s 匹配的列表的 sub strings 的最佳和最短匹配子集是什么 做这个的最好方式是什么 理想的结果是 m o se 因为它们一起拼
  • 使用javascript检查用户是否是第一次访问

    我正在尝试构建一个系统 如果用户第一次登陆某个页面 则不会发生任何事情 但如果同一用户再次访问 则该页面不应加载 而是应该转到不同的 URL function session if document cookie indexOf visit
  • 从文本文件中删除前 N 个字节

    是否有任何函数调用或简单的方法可以从 golang 中的文本文件中删除前 N 个字节 假设该文件被各种 go 例程有争议地附加 同时我想删除文件的前 N 个字节 你需要做f Seek要跳过第一个字节并进行常规读取 请参见示例 package
  • 如何获得 mallet 中某个主题的概率分布?

    使用木槌 我可以获得特定数量的主题及其单词 如何确保主题词符合概率分布 即总和为一 例如 如果我按如下方式运行它 如何使用 mallet 给出的输出来确保主题 0 的主题词的概率加起来为 1 mallet train topics inpu
  • 在Java中使用线程同时执行多个方法[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 就我而言 我有三个不同类别的三种方法
  • 在hibernate标准中使用mysql“按情况排序”

    我正在使用 Hibernate 4 3 1 Final Mysql 5 5 并且我想在某些连接实体上使用 按案例排序 的顺序逻辑 我希望实现的目标的纯 sql 表示如下 select adv id adv published date fr
  • 如何使用 jQuery 从 检索值?

    我必须隐藏输入字段 例如
  • 通过 sql 表中的 100,000 条记录进行通配符搜索的最佳优化技术是什么

    我正在开发 ASP NET MVC 应用程序 该应用程序有 200 个用户使用 这些 用户不断地 每 5 分钟 从 100 000 个项目的列表中搜索一个项目 该列表每个月都会增加 1 2 此 100 000 个项目的列表存储在 SQL S