借人气发个广告贴,见:
http://community.csdn.net/Expert/topic/5005/5005002.xml?temp=.4698908

解决方案 »

  1.   

    老话重提了,原帖分析语法,见:
    http://community.csdn.net/Expert/topic/4788/4788401.xml?temp=.3034632问题概要:现在分析效率,要选出海量记录中的一段,以下方案中居然只有MySQL能做到高效执行,望达人指教。【方案1】Oracle by 楼主
      select (
        select (
          select * from xxx
        ) where rowid < 10000010
      ) where rowid > 10000000;问题:如果选择的是100到110行,很快,但如果是10000000到10000010行,暴慢无比。复杂度是前者的100000倍。我认为应该有复杂度相等的方法才对。【方案2】MSSQL/Access(1) by liuxiaoyi666(MSMVP小猪妹马甲之八卦兔子) 信誉:126
    select top 110 * from tab where id not in(select top 100 id from tab order by id) order by id问题:where id not in(...)语句效率是集合操作,效率比Oracle的挨个数值比较还要低。【方案3】MSSQL/Access(2) by 123xie(xie)
    str="select top 110 * from tab order by id desc"
    rs.open str
    rs.move(100)问题:数据库需要把1000010行数据全部返回给应用服务器(如iis),效率极低。【方案4】MySQL by 楼主
    select * from xxxx limit x1, x2目前最佳方案,MySQL内置支持,效率好像还比较高,没有拿海量数据测试过。