问题:我的数据库有一张表有10万条数据左右,在程序和navicat执行所需要的时间相差很大,这是为什么呢?
执行的sql语句:
SELECT COUNT( * ) FROM comprehensive_discussion
在程序中运行,我用p6spy拦截查看运行时间,发现只需要1s左右:
在navicat执行,需要10s左右:
有人知道是什么原因吗?
navicat问题,
一个count 的10万条数据,不可能超过一两秒。
程序中是直接访问数据库吗?还是访问数据库在内存中的存储?
NAVICAT肯定是直接访问数据库的
估计是I/O查询和内存查询的差别吧
你应该是先在navicat中执行的吧,然后mysql的一级缓存把结果缓存了,然后程序再去执行相同的sql时,从一级缓存读取的结果,就会很快,你反过来试一下,先程序执行,然后再navicat执行
如果你想测试运行速度,要多次测试,不能只看一次的结果
数据库长期不连接的情况下,建立数据库连接要先进行物理连接,本身连接就很慢,之后都只是逻辑连接
此外你查个count(*)居然要花1秒,本身也很离谱,这应该是毫秒级的操作才对