如何存储查询执行计划以便以后使用

2024-04-19

我的应用程序对 SQL Server 数据库运行查询。

在许多情况下,我可以看到执行计划的好处:例如,我第一次单击按钮

SELECT * from Tasks
WHERE IdUser = 24 AND
  DATE < '12/12/2010' and DATE > '01/01/2010'

第一次需要 15 秒,接下来的时间需要 8 秒。

编辑:我使用参数化查询。

所以我第二次就进步了7秒。

现在,当我再次运行该应用程序时(因此我进行了一个新的数据库连接),第一次需要 15 秒,第二次需要 7 秒...

如何告诉 SQL Server 存储执行计划,至少在同一天记住它们?或者但是我如何才能从已经计算出的执行计划中受益?如果不同的用户运行相同的查询,这是一种告诉 sql server 足够聪明以使用相同执行计划的方法,即使在这种情况下 IdUser 可能会不同。

在软件中我有一些参数,所以下次执行查询时可能会有不同的MinDate和MaxDate,但这会影响查询计划吗?


使用参数化查询来最大限度地提高计划被缓存的机会

SELECT * from MYTasks 
WHERE IdUser = @UserId AND DATE < @enddate and DATE > @startdate

SQL Server 确实会进行自动参数化,但对此可能相当保守。

您可以从以下内容中深入了解计划重用

SELECT usecounts, cacheobjtype, objtype, text, query_plan, value as set_options
FROM sys.dm_exec_cached_plans 
CROSS APPLY sys.dm_exec_sql_text(plan_handle) 
CROSS APPLY sys.dm_exec_query_plan(plan_handle) 
cross APPLY sys.dm_exec_plan_attributes(plan_handle) AS epa
where text like '%MYTasks%' and attribute='set_options'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何存储查询执行计划以便以后使用 的相关文章

随机推荐

  • Asp.Net Core 3.1 Cookie 未附加 Razor 页面 C#

    Cookie 没有使用以下代码附加到页面 我尝试将 IsEssential 添加到选项中 但它不起作用 使用 Asp Net Core 3 1 Razor 页面 这是我的大部分startup cs 和附加的cookie 代码 启动 cs p
  • ORDER BY 的列有时为空

    Mysql 看起来像这样 SELECT CompanyName LastName FirstName FROM JOIN ORDER BY CompanyName LastName FirstName 现在的问题是 A 列有时是空的 或者是
  • 为什么尝试使用动态参数调用扩展方法时出现错误 CS1973

    考虑以下代码 internal static class Program public static string ExtensionMethod this string format dynamic args return format
  • 使用 ffmpeg 处理流的解码数据时出错

    我正在使用以下命令 ffmpeg i video1a flv i video1b flv i video1c flv i video2a flv i video3a flv i video4a flv i video4b flv i vid
  • 3D 游戏的 Libgdx 渲染层

    在我的第一个 3D 游戏中 我现在想要渲染地板 它实际上是一个平面 不是 libgdxPlane on y 0 我想添加一个Texture到它 这样我就可以在每个级别有不同的楼层 现在我的问题是 创建和渲染这种纹理地板的最佳方法是什么 我考
  • django 应用程序的 Heroku 推送获取“没有名为 psycopg2.extensions 的模块”

    我正在尝试将 django 应用程序推送到 heroku 并收到一个我在 heroku 或 stackoverflow 论坛中从未见过的错误 我正在使用 postgres 我不知道该从哪里开始 我在任何文档中都没有看到任何说明问题的内容 主
  • 在 TeamCity 构建期间将 nuget 包发布到 Octopus

    有一个已知问题 如果您在 TeamCity 构建期间进行部署 则会部署以前的版本 因为当前版本仅在构建完成后才可用 文档建议创建辅助 TeamCity BuildConfiguration 作为解决方法 但它很糟糕并且似乎不再起作用 有许多
  • 在 AngularJS 中的控制器之间共享数据

    我使用以下工厂从 API 获取数据并将其存储到名为 apiData 的本地变量中 app factory MyFactory function resource q var apiData var service var resource
  • android 清除字符串中的值

    我有一个应用程序 可以让您单击按钮从起始值 20 中添加和减去 5 或 5 以及 1 或 1 我对其进行了设置 这样当单击按钮时 它将将该值放入字符串并显示它 以便用户可以看到他们按下的内容的历史记录 我有一个名为 Reset 的方法 将起
  • 如何在 Android 中播放 GIF

    Hello stackoverflow我正在尝试开发一个 Android 应用程序来玩我自己的GIF 这是代码片段 MainActivity java public class MainActivity extends Activity O
  • 为什么 std::setbase(2) 不切换到二进制输出?

    cppreference 页面位于std setbase http en cppreference com w cpp io manip setbase says 除 8 10 或 16 之外的基值会将基域重置为零 这对应于十进制输出和依赖
  • 如何检查所有返回值是否均为 true?

    有没有一种简单的方法来确保所有返回的值都是 True 在下面的示例中 我有一个代表文件的对象集合 我想在继续之前确保所有源文件都存在 我将所有路径传递给 Test Path 该函数为每个文件返回 True False gt filesToU
  • 如何使用 NSJSONSerialization 类参考读取 JSON 文件?

    我需要使用 NSJSONSerialization 类参考来读取 JSON 文件 并且我找到的有关使用此类的所有示例都是从网页本身读取内容 而不是从之前创建的 JSON 文件中读取内容 任何人都知道如何使用该类解析 JSON 文件 谢谢 简
  • 如何在没有机器人的情况下使用 Telegram API?

    我不需要回复机器人 我只想进行只读调用来读取频道历史记录 也许我需要 该方法https core telegram org method messages getHistory https core telegram org method
  • jQuery ajax 处理 401 未经授权

    我正在使用 jQuery ajax 调用第三方网页 根据他们的页面 如果登录成功 他们向我发送状态代码 200 如果登录不成功 他们向我发送状态代码 401 这是我的 jquery 代码示例 此代码在 IE 上运行良好 但在 Chrome
  • Chrome 不断加载我网站的旧缓存

    我遇到了这个奇怪的问题 我的 Chrome 浏览器不断加载旧版本的网站 其代码甚至不再存在于我的服务器上 我认为这是一个典型的缓存问题 我尝试清理浏览器缓存 使用隐身模式并清除 DNS 缓存 旧的缓存页面仍在加载 这个问题似乎已经在这个谷歌
  • 无法向分组数据框添加行

    这是这个问题的后续问题如何将行添加到数据框中仅修改某些列 https stackoverflow com questions 71095723 how to add a row to a dataframe modifying only s
  • IOException:错误=7,参数列表太长,命令行很大

    我需要从 Java 调用 Unix 命令 代码如下 String strCmd iconv f strSrcEncoding t strTgtEncoding lt lt lt InputMessage String commands ba
  • android viewpager 更改适配器

    我正在开发一个带有 ViewPager 的应用程序 用于横向滚动表 有时我需要更改适配器以加载一组不同的表 我尝试执行以下操作 mViewPager setAdapter new pagerAdapterPushed getSupportF
  • 如何存储查询执行计划以便以后使用

    我的应用程序对 SQL Server 数据库运行查询 在许多情况下 我可以看到执行计划的好处 例如 我第一次单击按钮 SELECT from Tasks WHERE IdUser 24 AND DATE lt 12 12 2010 and