这很正常,你在其他服务器上执行的时间=连接握手时间+语句执行时间
连接握手消耗的时间在你这种少量查询上基本上是(远)大于语句执行时间,搞个数据库连接池做缓冲可能效果会好很多,那样的公式变为:
n次其他服务器上执行的时间=1次连接握手时间+n次语句执行时间,握手时间的消耗被n次均摊了。

解决方案 »

  1.   

    谢谢您,daimin78(钻石人) :
    借助limit,能够提高查询速度吗?我主要关心如何更好的实现分页。
      

  2.   

    网络情况怎么样?远程通过TOMCAT访问静态页面速度怎么样?
      

  3.   

    可能我刚才说的你还不是很明白,我举个例子来说吧:
    你在本地的sql操作时间(不管包不包括limit),我们设为A
    你在另外一台机器上连接数据库服务器(mysql)的握手时间,我们设为B
    你完成一次查询用的总时间设为S假设当你在数据库服务器上作查询的时候 A=1s,那么在数据库服务器上花费的总时间就是S=A+B=1s+0s=1s,只需要1秒。
    而你在web服务器上访问数据库服务器的握手时间B=2s,而A=1s不变,那么花费的总时间就是S=A+B=2s+1s=3s。
    这里是一个理想状态,我假设在数据库服务器上本地握手时间是0s,实际上应该是近似零秒而已。通过这个例子,你应该有数了吧,你再怎么优化select语句也不过是1s-->900ms而已,花费的主要时间还是在于握手时间,如果你不在乎连接时间的那无所谓。否则要么选择数据库连接池,增加每个连接的重用性,要么把web服务器和mysql服务器放在一台机器上。