【问题标题】:Why jdbc executing sqlserver proceduce takes 10 min but navicat or ssms only 50s?为什么 jdbc 执行 sql server 过程需要 10 分钟,而 navicat 或 ssms 只需要 50 秒?
【发布时间】:2017-08-18 06:57:48
【问题描述】:

我在 java 中使用 sqlserver-jdbc 驱动程序执行查询,在返回结果集之前等待了大约 700 秒,但是当我使用 navicat 或 SSMS 执行此操作时只有 50 秒。任何人都有类似的问题,我找不到原因,因为我不太了解数据库,。

【问题讨论】:

  • 我们需要更多信息来提供帮助。给我们看一些代码,什么查询运行缓慢?

标签: sql-server database jdbc ssms navicat


【解决方案1】:

使用该脚本获取您的 SP 的缓存执行计划:

SELECT cp.objtype AS ObjectType,
OBJECT_NAME(st.objectid,st.dbid) AS ObjectName,
cp.usecounts AS ExecutionCount,
st.TEXT AS QueryText,
qp.query_plan AS QueryPlan
FROM sys.dm_exec_cached_plans AS cp
CROSS APPLY sys.dm_exec_query_plan(cp.plan_handle) AS qp
CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) AS st
WHERE objtype ='Proc' AND OBJECT_NAME(st.objectid,st.dbid) = '__YOUR_SP_NAME__';

我认为 SSMS 和 sqlserver-jdbc 驱动使用不同的缓存计划。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-17
    • 2012-09-29
    • 1970-01-01
    • 2019-08-05
    • 2020-08-22
    • 2019-11-30
    • 2016-01-05
    • 2017-02-11
    相关资源
    最近更新 更多