连结字符串是:
"Provider=MSDASQL.1;Persist Security Info=False;Extended Properties='DSN=aabbcc;SRVR=bbccdd;DB=mydb;UID=sa;PWD=1234'"查询语句是:
SELECT WORK.TIME AS DATE,WORK.NE AS NAME,WORKROOM.MM,WORKROOM.CC,WORKROOM.DD,WORKROOM.KK FROM WORKROOM LEFT JOIN WORK ON WORKROOM.ID=WORK.ID WHERE WORK.TIME='2012-5-21 17:00' AND WORK.NE='COFFEE' AND WORKROOM.MM LIKE'%XXX%'我换过很多查询语句,无论是查很多表的还是查两个表的,都慢得要命,超过5分钟,而且每次查询,程序产生的流量都是1G左右或者更大的流量(从360流量防火墙上发现这问题的),但是返回的结果有时候才几十条电脑里安装了SYBASE的ODBC,没有安装完整的SYBASE 11,所以ODBC里只能添加SYBASE ASE ODBC DRIVER
无论我查询的语句是什么,效果都是一样的,难道SYBASE ASE ODBC就那么的慢?有没有解决办法?

解决方案 »

  1.   

    既然是使用了ADO,干嘛还使用odbc?不能直接驱动?
      

  2.   

    另外,你在where字句中使用到的字段是否设置了索引,这会对性能有很大影响,特别是在大数据集的时候
      

  3.   

    既然已经配置好了 ODBC,连接字符串只需要 "DSN=aabbcc" 就可以了;
    你的连接串看起来象通过 MSDASQL.1 代理间接访问 DSN=aabbcc,怎么会不慢!
    或者不需要 ODBC 直接指定 "Driver={SYBASE ASE ODBC Driver};Srvr=bbccdd;DB=mydb;UID=sa;PWD=1234;"
      

  4.   


    我也想用ADO直接连,怎么连?搜不到相关的方法
      

  5.   


    我用下面这个连接字符串试过的,一样的效果
    PROVIDER=MSDASQL.1;dsn=aabbcc;uid=sa;pwd=1234;database=mydb; 你说的不需要ODBC,直接去连:"Driver={SYBASE ASE ODBC Driver};Srvr=bbccdd;DB=mydb;UID=sa;PWD=1234;"提示的是实时错误80004005
    [datedirect] [odbc sybase wire protocol driver] insufficient information to connect to the data source很多连接的方法我都试过,凡是可以连接成功的,都是一个效果,时间是5到10分钟,数据流量是1-2G,简直是可怕,拿SQLDBX软件选择ODBC方式查得挺好的(1分钟以内,数据流量跟查询返回的结果差不多,几兆而已),查询语句一模一样,效果天差万别据说PB查询这个也超级快的
    我主要就是查询,也不干别的什么,怎么可以这样慢?我哪里弄错了呢?
      

  6.   

    直接 "DSN=aabbcc;SRVR=bbccdd;UID=sa;PWD=1234;" 呢?
    不要 PROVIDER=MSDASQL.1
      

  7.   

    又:你的 Sybase 到底什么版本的?
    11 是 Driver={SYBASE SYSTEM 11};
    12 才是 Driver={SYBASE ASE ODBC Driver};
      

  8.   

    要查的数据库是11,但是我的11版本的ODBC不知道为什么装上去不能配置(提示无法加载,存在系统错误代码126),后来装了个12的ODBC,就是SYBASE ASE ODBC Driver了,这个可以拿SQLDBX查询,跟11的效果一样,只是我的程序查询效果太疯狂了在我的ODBC管理里有两种,但是只有12的可以配置相关信息
    要或者不要PROVIDER=MSDASQL.1,效果都是一样的,流量巨大,时间超慢,而我的查询语句仅仅是查2个表,用不用JOIN都是一样的效果,返回的内容才几十行,居然要10分钟,2G的流量
      

  9.   

    那么可能是环境的问题了。
    找干净的机器或虚拟机安装 Sybase 11 的客户端再试试。
      

  10.   

    我就是不想安装客户端,只想随便装个ODBC查询下而已
    真是悲剧,同样的环境下,SQLDBX这个绿色软件为什么可以高效的查询,VB6的ADO却做不到呢?
    实在不理解为什么数据流量那么大耗时那么久,结果却可以正确的返回,肯定是有什么没有考虑到的
      

  11.   

    rs.open 带的参数问题
    原来是1,3,不行,改了其它参数进行尝试,就好了
      

  12.   

    原来是这样。
    以前倒是碰到过 Sybase 用 ODBC 访问不支持某些常用的游标类型、锁类型,搞得 ADO 访问居然不能自适应不同数据库,非要单独编写特别的版本。
    不过没有碰到过数据流量暴增的情况,Sybase 真是神奇啊!