http://topic.csdn.net/u/20100413/14/ba062a92-a32d-47f2-b37c-0bd46dc2fab9.html
今天看了一个帖子,我也试了一下,他给出的链接,我看他上面显示的是180多万条数据,分页很快。
我自己测试了一下。建了一个表:CREATE TABLE `t_test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(30) DEFAULT NULL,
  `addr` varchar(30) DEFAULT NULL,
  `email` varchar(30) DEFAULT NULL,
  `note` varchar(3000) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1094468 DEFAULT CHARSET=utf8其中插入了100万条数据。我按照那个方式来分页查询。但是效果和直接写差不多:select * from t_test limit 999999,1;1 row in set (52.20 sec)
网上优化过的查询方法:select id,name from t_test t INNER JOIN ( select id as my_id from ( select id from t_test order by id desc limit 999999,1 ) as tmp ) as temp ON my_id=id1 row in set (58.34 sec)第二种方法甚至更慢?
请问为什么啊? 
我对数据库不是很懂。。
先谢谢啦。。

解决方案 »

  1.   


    select id,name from t_test t INNER JOIN (
     select id as my_id from ( select id from t_test order by id desc limit 999999,1 ) as tmp 
    ) as temp ON my_id=id我机器的配置很垃圾。但是我发现差距太大了。我查一条数据得用差不多一分钟。
      

  2.   

    不需要了。主键会自动创建索引。你的是INNODB,不如直接 select * from t_test limit 999999,1; 这个应该会快一些。 MYISAM的则是第二个快。
      

  3.   

    100W数据都需要分页?LZ颠覆了我的认识。