我遇到了 SQL Server 查询性能问题,希望能从大家那里得到一些见解。
问题陈述:
我有一个 SQL 查询,当直接在 SQL Server Management Studio (SSMS) 中执行时,性能良好(约 6 毫秒),在执行计划中显示“索引查找”。但是,当使用 JDBC 从我的 Java 应用程序执行相同的查询时,执行计划显示“索引扫描”,并且查询的执行时间明显更长(约 1 秒)。
我尝试过的:
- 确保所涉及的表和索引的统计信息是最新的。
- 比较 SSMS 和 Java 应用程序之间的执行上下文设置。
- 将 SQL 添加到 Stored prod 中,然后它工作正常,进行索引查找。
- 删除了计划 ID,清除了缓存。
问题:
- 是什么导致了查询性能的这种差异?
- 是否有我可能错过的调试步骤?
计划何时从 Java 执行此操作:https://www.brentozar.com/pastetheplan/ ?id=SkWWezsya
计划何时从 SSMS 执行此操作:https://www.brentozar.com/pastetheplan/ ?id=HJZPefokp
任何见解或建议将不胜感激。