sql语句:select 1 from towerload_info where FilesNames=''FC001MY1500KW19-20120801021848TJ'' and LoadSign=1 在navicat中执行时返回结果只需要100多ms,但在自己编写的程序中需要6s(ado),请各位帮忙看看是什么原因?
楼主试一下 select Count(*) from towerload_info where LoadSign=1 and FilesNames='FC001MY1500KW19-20120801021848TJ' 这句语句的时间,如果非常短,试一下把你的AdoQuery.CursorLocation设置成clUseServer试一下查询记录的速度,不确定能解决你的问题. 个人分析: 50万条记录查询并全部复制到本地100ms完成有点悬,所以怀疑它用的分页或者就是这样,或者其他因为你select 1,固定数字,只要一个满足条件的记录数就够了,所以navicat有可能优化,不确定这一点。
navicat只有读取部分数据,显示出来
如果我没有猜错的话楼主在程序里使用的是循环的方式,改用SQL语句进接打开看。
对了 提醒我了 navicat默认是显示前1000条记录
navicat?没听过。这个sql返回多少条记录?虽然字段就是1.
我也发现了这个问题,同样的语句,navicat vs java hibernate,相差是有100倍,不知是什么原因
是不是ADO还执行其它事件,比如BeforeOpen,Afteropen,CalcFields,...等事件,都有代码新建一个工程试试
之前没用过MyODBC,就找了下了个用了有问题,然后重下了个 mysql-connector-odbc-5.1.5-win32.msi 用就好了。lz不妨试试看吧...
另外navicat软件应该对mysql的连接和查询有优化;个人感觉应该是用odbc的原因多一点;
这句语句的时间,如果非常短,试一下把你的AdoQuery.CursorLocation设置成clUseServer试一下查询记录的速度,不确定能解决你的问题.
个人分析:
50万条记录查询并全部复制到本地100ms完成有点悬,所以怀疑它用的分页或者就是这样,或者其他因为你select 1,固定数字,只要一个满足条件的记录数就够了,所以navicat有可能优化,不确定这一点。