V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
iOct
V2EX  ›  问与答

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

  •  
  •   iOct · 2015-08-27 12:18:58 +08:00 · 1556 次点击
    这是一个创建于 3383 天前的主题,其中的信息可能已经有所发展或是发生改变。
    因为项目的限制,数据库用的是 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
    Septembers
        1
    Septembers  
       2015-08-27 13:13:49 +08:00 via Android
    因为存储过程查询优化器能做优化
    iOct
        2
    iOct  
    OP
       2015-08-27 13:32:50 +08:00
    @Septembers 问题在于都是执行存储过程,难道优化器还能甄别不同的连接驱动和客户端么?
    sun1991
        3
    sun1991  
       2015-08-27 14:15:51 +08:00
    你确定 MS SQL Server Management Studio 将所有的数据都返回了吗?
    iOct
        4
    iOct  
    OP
       2015-08-27 14:48:19 +08:00
    @sun1991 是,因为执行的是一个统计的存储过程,所以返回数据只有 44 条,数据逐一比对过,都是正确的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1817 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:28 · PVG 00:28 · LAX 08:28 · JFK 11:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.