SELECT * 
FROM `jtbc_article` 
LIMIT 611010 , 30显示行 611010 - 611015 (611,016 总计, 查询花费 0.3408 秒)
--------------------------------------SELECT * 
FROM `jtbc_article` 
ORDER BY aid DESC 
LIMIT 611010 , 30显示行 611010 - 611015 (611,016 总计, 查询花费 2.9877 秒)
--------------------------------------
SELECT * 
FROM `jtbc_article` 
ORDER BY aid ASC 
LIMIT 550050 , 30显示行 550050 - 550079 (611,016 总计, 查询花费 2.4494 秒)
有人告诉我为啥不。有啥优化办法!

解决方案 »

  1.   

    因为MYSQL需要对你的数据进行排序,这个需要时间。 希望这个解释楼主能够看明白。创建aid 的索引 ,如何创建索引,楼主可以在MYSQL提供的免费的官方手册中搜索 create index的用法。
      

  2.   

    order by 以后需要用到临时表空间对表内容字段排序所以在aid字段上加索引试试
      

  3.   

    EXPLAIN SELECT *  
    FROM `jtbc_article`  
    ORDER BY aid DESC 
    看看结果,这种方式是用不到索引的
    EXPLAIN SELECT AID  
    FROM `jtbc_article`  
    ORDER BY aid DESC 
    这种方式是可以用到索引的
      

  4.   

    自己解决了。用写ASP.NET时的SQL分页。效率就上去了,大牛别笑俺。。SELECT * 
    FROM jtbc_article
    WHERE aID < ( 
    SELECT min( aid ) 
    FROM (SELECT aid
    FROM jtbc_article
    ORDER BY aid DESC 
    LIMIT 610980 
    ) AS T ) 
    ORDER BY aID DESC 
    LIMIT 30 显示行 0 - 29 (30 总计, 查询花费 0.4101 秒)
      

  5.   

    我是新手,感觉4楼教会我MYSQL命令行分析效率···