遇到一个奇怪的 SQL 查询效率问题

2015-08-27 12:18:58 +08:00
 iOct
因为项目的限制,数据库用的是 SQL Server 2008 R2 ,写了一个存储过程实现数据的汇总查询,被查询表数据量大小在万~十万间,有若干张,均已建立索引。
现在问题是使用微软的 MS SQL Server Management Studio 运行该存储过程大概在 4 ~ 6 秒左右返回结果。
但是使用 jdbc 接口去运行该存储过程需要等待长达 2 分多钟,返回的数据记录数都是一样的。
尝试使用一些通用数据库管理软件,测试效率,如: Aqua Data Studio , DbVisualizer , Navicate SQL Server Edition ,均需要 2 分多钟。

JDBC 的驱动尝试过配置微软自己的 sqljdbc4 , sqljdbc41 ,也测试过开源的 sourceforge jtds 。测试环境的 JRE 为 1.7 (即 JRE 7.0 )

另外我还测试了一下使用 ODBC 连接到数据库查询的效率,也是 2 分多钟才出结果

这个巨大的差距让我百思不得其解?
1498 次点击
所在节点    问与答
4 条回复
Septembers
2015-08-27 13:13:49 +08:00
因为存储过程查询优化器能做优化
iOct
2015-08-27 13:32:50 +08:00
@Septembers 问题在于都是执行存储过程,难道优化器还能甄别不同的连接驱动和客户端么?
sun1991
2015-08-27 14:15:51 +08:00
你确定 MS SQL Server Management Studio 将所有的数据都返回了吗?
iOct
2015-08-27 14:48:19 +08:00
@sun1991 是,因为执行的是一个统计的存储过程,所以返回数据只有 44 条,数据逐一比对过,都是正确的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/216356

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX