这是一个创建于 3327 天前的主题,其中的信息可能已经有所发展或是发生改变。
因为项目的限制,数据库用的是 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 分多钟才出结果
这个巨大的差距让我百思不得其解?
4 条回复 • 2015-08-27 14:48:19 +08:00
|
|
1
Septembers 2015-08-27 13:13:49 +08:00 via Android
因为存储过程查询优化器能做优化
|
|
|
2
iOct 2015-08-27 13:32:50 +08:00
@ Septembers 问题在于都是执行存储过程,难道优化器还能甄别不同的连接驱动和客户端么?
|
|
|
3
sun1991 2015-08-27 14:15:51 +08:00
你确定 MS SQL Server Management Studio 将所有的数据都返回了吗?
|
|
|
4
iOct 2015-08-27 14:48:19 +08:00
@ sun1991 是,因为执行的是一个统计的存储过程,所以返回数据只有 44 条,数据逐一比对过,都是正确的。
|