数据库内只有1万7千条左右的纪录SQL并不复杂,没有用LIKE,只是找useridSELECT userid, first_name, last_name, email, phoneno, fax, dateline FROM nametable WHERE userid='1' ORDER BY dateline DESC
0.0680/sSELECT userid, first_name, last_name, email, phoneno, fax, dateline FROM nametable WHERE userid='1' ORDER BY dateline DESC LIMIT 80, 20
0.2270/sDROP TABLE IF EXISTS `test`.`nametable`;
CREATE TABLE  `test`.`nametable` (
  `nid` int(10) unsigned NOT NULL auto_increment,
  `userid` varchar(45) NOT NULL,
  `first_name` varchar(45) NOT NULL,
  `last_name` varchar(45) NOT NULL,
  `email` varchar(255) NOT NULL,
  `phoneno` varchar(45) NOT NULL,
  `fax` varchar(45) NOT NULL,
  `dateline` varchar(45) NOT NULL,
  `description` text NOT NULL,
  PRIMARY KEY  USING BTREE (`nid`),
  KEY `userid` (`userid`),
  KEY `dateline` (`dateline`)
) ENGINE=MyISAM AUTO_INCREMENT=19224 DEFAULT CHARSET=utf8;

解决方案 »

  1.   

    http://topic.csdn.net/u/20100201/16/dc9ad7d7-840b-4ded-9d7a-d94db5bc235f.html
    看看这篇帖子吧。
      

  2.   

    建议多做几个查询,看一下平均执行时间。理论上 limit 不会更慢啊。
      

  3.   

    多做几个查询了,有ORDER BY就会慢,平均都要0.2318/s 
    ORDER BY dateline问题 
    如果不ORDER BY 就很快 
    0.0015/s 
    改了dateline为integer都没分别 CREATE TABLE `test`.`nametable ` ( `nid` int(10) unsigned NOT NULL auto_increment, `userid` varchar(45) NOT NULL, `first_name` varchar(45) NOT NULL, `last_name` varchar(45) NOT NULL, `email` varchar(255) NOT NULL, `phoneno` varchar(45) NOT NULL, `fax` varchar(45) NOT NULL, `dateline` int(10) unsigned NOT NULL default '0', PRIMARY KEY USING BTREE (`nid`), KEY `userid` (`userid`), KEY `dateline` (`dateline`) ) ENGINE=MyISAM AUTO_INCREMENT=24896 DEFAULT CHARSET=utf8;