为什么同一条sql语句在navicat索引中比茬程序中执行要快100倍以上? [问题点数:40分]
-
在navicat索引中执行时返回结果只需要100多ms但在自己编写的程序中需要6s(ado),请各位帮忙看看是什么原洇
-
100ms和6s是差别很大,单单Open应该不会相差这么大
-
只有50几万条数据应该不是语句的原因,非常想不通的问题是在navicat索引中运行为什么是正常的唯一的不同是自己写的程序通过mysql的odbc驱动而已。
-
具体原因待查...不瞎说只说下我自己曾经遇到过的事情。
-
在数据库系统的ide环境和在使用ODBC嘚程序中有一些速度的差异,但一般不会达到一个数量级慢40%左右
-
用odbc连接本身就会慢一点,
另外navicat索引软件应该对mysql的连接和查询有优化;
個人感觉应该是用odbc的原因多一点;
-
这句语句的时间,如果非常短,试一下把你的AdoQuery.CursorLocation设置成clUseServer试一下查询记录的速度,不确定能解决伱的问题.
50万条记录查询并全部复制到本地100ms完成有点悬所以怀疑它用的分页或者就是这样,或者其他因为你select 1固定数字,只要一个满足条件的记录数就够了所以navicat索引有可能优化,不确定这一点
-
如果我没有猜错的话楼主在程序里使用的是循环的方式,改用SQL语句进接打开看
-
不过我想可能是这个原因:navicat索引一直是打开数据库的,而程序中需要先打开数据库然后执行完毕再断开数据库。不过hibernate用的是连接池也不应该差这么多啊
匿名用户不能发表回复!