sp_executesql 导致我的查询非常慢

2024-04-11

我在数据库表上运行 sp_executesql 时遇到一些问题。在本例中,我使用 ORM (NHibernate) 生成一个查询一个表的 SQL 查询。该表大约有 700 万条记录,并且索引很高。

当我运行 ORM 在没有 sp_executesql 的情况下发出的查询时,它运行得非常快,并且探查器显示它有 85 次读取。当我使用 sp_executesql 运行相同的查询时,它有大约 201,828 次读取。

我需要在 SQL Server 上做些什么来提高在没有 sp_executesql 的情况下运行查询的性能吗?看起来好像它没有使用我的索引。

解决这个问题的最佳方法是什么?如果可能的话,我宁愿不改变 ORM 生成 SQL 的方式,而是在 SQL Server/数据库级别修复问题,因为这似乎就是问题所在。我猜我需要对数据库进行更多优化来解决这个问题,我只是不知道是什么。

exec sp_executesql N'SELECT top 20 
                            this_.Id as Id0_0_, 
                            this_.Application as Applicat2_0_0_, 
                            this_.[Context] as column3_0_0_, 
                            this_.Logger as Logger0_0_, 
                            this_.Message as Message0_0_, 
                            this_.Exception as Exception0_0_, 
                            this_.Thread as Thread0_0_, 
                            this_.[Level] as column8_0_0_, 
                            this_.LogDate as LogDate0_0_, 
                            this_.SessionId as SessionId0_0_ 
                       FROM LogMessages this_ 
                      WHERE this_.[Context] = @p0',
                   N'@p0 nvarchar(2)',
                   @p0 = N'55'

上下文是 varchar(255)。该字段的形式非常自由。它并不总是整数,而且长度可能很大。在本例中,我查询的是“55”值,但也可以轻松查询“Foooooobaaaarrr”


.[Context] 的数据类型是什么,使用相同的数据类型

现在你正在使用 nvarchar(2) 但对于像 55 这样的东西来说这似乎很奇怪,如果你没有使用相同的数据类型,你将得到转换,然后导致扫描

根据您更新的问题,它看起来像是 varchar(255),然后执行此操作

WHERE this_.[Context] = @p0',N'@p0 varchar(255)',@p0='55'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sp_executesql 导致我的查询非常慢 的相关文章

  • 如何用约束标记一大组“传递群”?

    在 NealB解决方案之后进行编辑 与以下解决方案相比 NealB的解决方案非常非常快任何另一个 https stackoverflow com q 18033115 answers and 提出了关于 添加约束以提高性能 的新问题 Nea
  • IIF(...) 不是公认的内置函数

    我正在尝试在 Microsoft SQL Server 2008 R2 中使用它 SET SomeVar SomeOtherVar IIF SomeBool value when true value when false 但我收到一个错误
  • 时间序列数据的自连接

    我需要一些帮助来完成我认为应该是相当简单的自连接查询 只需要将两条记录中匹配的开始时间和结束时间合并为一条记录 假设我的表中有以下内容 Time Event 08 00 Start 09 00 Stop 10 30 Start 10 45
  • 为什么我的代码会产生错误:该语句没有返回结果集[重复]

    这个问题在这里已经有答案了 我正在从 Microsoft SQL Server Studio 执行以下查询 该查询工作正常并显示结果 SELECT INTO temp table FROM md criteria join WHERE us
  • 使用来自另一个数据库的选择查询更新 mysql 表

    我有两个数据库 我想用另一个数据库表中的值更新一个表 我正在使用以下查询 但它不起作用 UPDATE database1 table1 SET field2 database2 table1 field2 WHERE database1 t
  • WHERE NOT EXIST 附近的语法错误

    我在堆栈中搜索 但没有一个达到最终答案 我的查询是这样的 INSERT INTO user username frequence autoSend VALUES feri2 3 1 WHERE NOT EXISTS SELECT FROM
  • 插入记录后如何从SQL Server获取Identity值

    我在数据库中添加一条记录identity价值 我想在插入后获取身份值 我不想通过存储过程来做到这一点 这是我的代码 SQLString INSERT INTO myTable SQLString Cal1 Cal2 Cal3 Cal4 SQ
  • 获取mysql中逗号分隔行中不同值的计数

    一个表 Jobs 有 2 列 JobId 城市 当我们保存工作时 工作位置可能是多个城市 如下所示 JobId City 1 New York 2 New York Ohio Virginia 3 New York Virginia 我如何
  • NHibernate - CreateCriteria 与 CreateAlias

    假设以下场景 class Project public Job Job class Job public Name 假设我想使用 Criteria API 搜索其 Job 名称为 sumthing 的所有项目 我可以使用 CreateAli
  • ORA-12728: 正则表达式中的范围无效

    我想检查表中是否插入了有效的电话号码 所以我的触发代码在这里 select start index into mob index from gmarg mobile operators where START INDEX substr ne
  • SQL查询查找具有特定数量关联的行

    使用 Postgres 我有一个架构conversations and conversationUsers Each conversation有很多conversationUsers 我希望能够找到具有确切指定数量的对话conversati
  • meta_query,如何使用关系 OR 和 AND 进行搜索?

    已解决 请参阅下面的答案 我有一个名为的自定义帖子类型BOOKS 它有几个自定义字段 名称为 TITLE AUTHOR GENRE RATING 我该如何修复我的meta query下面的代码以便仅books在自定义字段中包含搜索词 tit
  • 通过 C# SqlCommand 执行合并语句不起作用

    我正在第一次尝试使用临时表和MERGE语句通过更新 SQL 表SqlCommandC 中的对象 我正在开发的程序旨在首先将大量记录 最多 20k 导出到 Excel 电子表格中 然后 用户可以搜索并替换特定值 并根据需要更新任意多记录中的任
  • 可以有一个带有可变列的表吗?

    这可能是一个愚蠢的问题 但这里是 是否可以创建一个能够包含具有可变列数和自定义列名称的行的动态表 我浏览过 EAV 建模 但看起来很沉重 现实生活中的例子可能是这样的 假设我有一个客户登记册 但每个客户可能需要输入不同的信息 根据您要输入的
  • 在 SQL Server 2005 中,len() 和 datalength() 有什么区别?

    SQL Server 2005 中的 len 和 datalength 有什么区别 DATALEN 将返回用于存储值的字节数 http msdn microsoft com en us library ms173486 SQL 90 asp
  • Microsoft SQL:CASE WHEN 与 ISNULL/NULLIF

    除了可读性之外 在防止 SQL 中的除以 0 错误时 使用 CASE WHEN 语句与 ISNULL NULLIF 相比还有什么显着的好处吗 CASE WHEN BeginningQuantity BAdjustedQuantity 0 T
  • Ruby ActiveRecord 和 sql 元组支持

    ActiveRecord 是否支持 where 子句中的元组 假设底层数据库支持 结果 where 子句看起来像这样 where name address in John 123 Main St I tried Person where n
  • 向带有检查约束 SQL 的表添加列

    我想向表中添加一列 然后添加一个检查约束以确保其大于 0 我似乎无法让它在 oracle sl Developer 中运行 Alter TABLE store101 add column Base salary Number 7 2 con
  • T-SQL:如何获取字符串的确切字符长度?

    我正在为预先没有数据类型信息的表生成 T SQL SELECT 语句 在这些语句中 我需要执行取决于表列的原始值的长度的字符串操作操作 一个示例 但不是唯一的示例 是在字符串中的特定位置插入一些文本 包括将其插入末尾的选项 SELECT C
  • 针对约 225 万行的单表选择查询的优化技术?

    我有一个在 InnoDB 引擎上运行的 MySQL 表 名为squares大约有 2 250 000 行 表结构如下 squares square id int 7 unsigned NOT NULL ref coord lat doubl

随机推荐

  • 将文件中的非连续块映射到连续内存地址

    我对使用内存映射IO的前景感兴趣 最好是 利用 boost interprocess 中的设施实现跨平台 支持 将文件中的非连续系统页面大小块映射到 内存中连续的地址空间 一个简化的具体场景 我有许多 普通旧数据 结构 每个结构都有固定长度
  • 使用仅显示唯一值的 D3 对列表进行排序

    我需要对 D3 上显示唯一值的列表进行排序 我可以对其进行排序 但它显示了它的所有出现情况 该文件是 csv 我想按 邮政编码 列对其进行排序 仅作为背景 我稍后将使用此列表作为下拉菜单 因此这是过滤数据的一种方法 这就是我所拥有的 var
  • 查找鼠标相对于元素的位置

    我想用画布制作一个小绘画应用程序 所以我需要找到鼠标在画布上的位置 由于我没有找到可以复制 粘贴的无 jQuery 答案 因此这是我使用的解决方案 document getElementById clickme onclick functi
  • 如何在另一个类中访问 IBOutlet?

    我在这个问题中遇到了同样的错误 我如何访问另一个类中的 IBOutlet 迅速 https stackoverflow com questions 35358225 how can i access iboutlet in another
  • 用于访问 VMware vSphere PowerCLI 的 C# 代码 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有 C 代码通过 PowerCLI 或其他方式访问 vSphere API 的示例 对于测试自动化
  • 用于方形图像的 Google 自定义搜索 API

    我正在寻找一种方法来指定 Google 自定义搜索 API 返回的图像具有方形格式 我尝试过 tbs iar s 因为我读过使用自定义搜索 API REST JSON 搜索方形图像 https stackoverflow com quest
  • 如何从行索引 Swift 获取索引路径

    我正在加载一个数组UIcollectionview 稍后会添加其他数据 我想随机选择集合视图项目 var indexpath Int arc4random uniform UInt32 items count 1 self collecti
  • 删除非英文字符 PHP

    我如何解析字符串以删除 php 中的所有非英文字符 现在我想删除类似的东西 谢谢 str preg replace 00 255 u str
  • 是否可以使用 jquery 为每一行文本添加动画?

    jquery 是否可以一次显示一行文本 我知道它可以在闪存中完成我这里有一个例子http iliketoplay dk blog deff http iliketoplay dk blog deff 在播放视频时 鼠标单击一个圆圈 将打开一
  • 使用 EF Core 继承时如何避免重复属性投影?

    我正在努力解决如何在使用时避免重复投影逻辑EF Core 中的继承 https learn microsoft com en us ef core modeling inheritance 这是我的情况 我有三种类型 Lesson 这是一个
  • 可以在单个 PHP 脚本中使用多个独立的 $_SESSION 吗?

    我想在单个 PHP 脚本中使用两个独立的 SESSION 我尝试使用以下代码验证这是否可行 error reporting 1 session name session one session start SESSION array SES
  • 如何使用 Node.js 标记 Markdown?

    我正在构建一个 iOS 应用程序 该应用程序的视图将从 Markdown 中获取其来源 我的想法是能够将 MongoDB 中存储的 markdown 解析为 JSON 对象 如下所示 h1 This is the heading p Her
  • 如何使用Qt中的QSyntaxHighlighter类在QML TextEdit上实现富文本逻辑?

    我的 QML 文件中有一个 TextEdit 并且有一个 QSyntaxHighlighter C 类 我想在 C 类中指定突出显示逻辑并将其应用到 TextEdit 但我不确定如何在 QML 对象和 C 类之间建立连接 您还可以提供一些示
  • Symfony2 表单事件 PreSetData 订阅者

    在我的应用程序中 用户可以为某些实体创建自定义字段 然后在显示表单时为每个实体对象设置此自定义字段的值 实现是这样的 1 我为表单创建了一个接口 并且我想要实现该接口的表单 2 我为所有表单创建了一个表单扩展 app core form b
  • 如何在 python 中使用网址下载文件?通过浏览器下载可以,但不能通过python的请求下载

    如果在浏览器 Firefox Chrome 等 中输入 URL 则会下载该文件 但是当我尝试使用 python 下载相同的文件 使用相同的 URL 时requests or urllib图书馆 我没有得到任何回应 URL https www
  • 用例可以没有参与者吗?

    我正在研究全自动系统的用例图 外部系统只会触发该系统的一个用例 大多数其他用例都是计划任务并由计时器调用 我有一个由计时器调用的用例 它包含并扩展了其他两个用例 当我编写用例描述时 谁将成为 UC 2 和 UC 3 的参与者 用例可以在没有
  • 无法销毁多对多关系中的记录

    我是 Rails 新手 所以我确信我犯了一个简单的错误 我在两个模型之间建立了多对多关系 User and Group 它们通过连接模型连接GroupMember 这是我的模型 删除了不相关的内容 class User lt ActiveR
  • WCF 和多主机标头

    我的雇主网站有多个主机名 它们都访问同一服务器 我们只是出于品牌目的显示不同的皮肤 不幸的是 WCF 在这种情况下似乎不能很好地工作 我试过了使用自定义主机工厂覆盖默认主机 http www robzelt com blog 2007 01
  • 具有可变动作的强化学习

    All the 强化学习 http en wikipedia org wiki Reinforcement learning我读过的算法通常应用于具有固定数量操作的单个代理 是否有任何强化学习算法可以在考虑可变数量的动作的同时做出决策 例如
  • sp_executesql 导致我的查询非常慢

    我在数据库表上运行 sp executesql 时遇到一些问题 在本例中 我使用 ORM NHibernate 生成一个查询一个表的 SQL 查询 该表大约有 700 万条记录 并且索引很高 当我运行 ORM 在没有 sp executes