在分页的处理方法中,哪种可以尽可能少的占用CPU?各位高手可以提供下思路吗?谢谢

解决方案 »

  1.   

    microfire(丁丁) :内存1G,但数组行不通,虽然CPU占用率不高,但大量数据下,内存使用率直线上升,操作完成也不会释放。
    ustb(偶然) :我的分页就是上面说的格式,是很普通的做法。
      

  2.   

    fish21cn(阿飞) :
    每页显示25条记录;每次查询日期为必选项,并将其控制的10天内,也就是说最多显示10天的数据(最多100万);分页是必要的,但希望分页技术能尽量减少CPU的占用率,也就是说,在必须分页的基础上,只要能降低CPU的占用率(越少越好,当然内存也要考虑),就是好的分页的思路。
      

  3.   

    数据查询先是count,再用limit n,25就可以了,这时传回的就25条记录而已,不会占用很多资源关键的是数据库查询
      

  4.   

    这么大的数据量,索引当然是必不可少的了。分页显示时,记录越多每页显示的时间越久,CPU达到100%的时间也就越久
      

  5.   

    你用的是什么数据库,如果不是Sybase可以只读分页的那一部分
      

  6.   

    Jatic(要学的太多了) :
    正像你所说的,我是开始只得到count,将其保存下来(在中间处理页面中完成),然后转到显示页面,从库中提25提记录将其显示出来
      

  7.   

    你把你的表贴出来吧.
    然后把你的查询的查询计划也贴出来吧。
    如果是良好的查询,不会出现你说的那中情况的。
    一般从几百条记录里取10条记录,只需要0.xms.
      

  8.   

    请问楼主,你使用的是否mysql数据库?你可以在控制台里查询相同条件的内容看看占用资源和时间如何?我在6w条记录中:
    SELECT * FROM `test` WHERE country = '云南省' LIMIT 1, 30 
    只用了0.068s,只一闪就显示出来了!我认为和分页显示没有很大的关系,最主要是数据库查询。
    还有,你的系统会不会有问题?如果数据量很大,可以考虑换数据库
      

  9.   

    fish21cn(阿飞) :呵呵,从一亿的记录中取100万,从100万的记录中取25条,可不是从几百条记录中取10条可以比喻的。
    我现在看到那些数据都头大,痛苦啊~~~
      

  10.   

    Jatic(要学的太多了) :数据库MYSQL3.23.57,系统没问题。你说的那个测试我也做过,甚至比你的记录还多,但控制台和web的速度可不是可以比的。
      

  11.   

    weizhihui1213:你的查询中有没有多表连合查询,如果没有应该会快的。照你的说法倒好像是数据库不堪负荷了,我没有操作过1亿记录的数据库。如果你确定系统没有问题,而查询又是如此的慢,那么...
      

  12.   

    楼主.
    一定要从1亿的记录中取100万条了.请问你这个取100万条记录的操作是否必要.
    况且,一般来对于的结果集都是提供一个Handle(或者说是一个指针)来定位记录.根本不会考虑将结果保存下来.
      

  13.   

    我做了个实验,在百度中搜索“1”,结果是这样的“百度为您找到相关网页约209,000,000篇,用时0.001秒”,害怕吧。而且它也实现了比分页更复杂的内容。
      所以,单纯的靠一个数据库,简单用select 来查询,根本无法实现这个功能。我想应该根据某种算法建立索引数据库,然后对索引数据库再建立索引数据库....我不是很懂,只是随便说说.
      然后在查询语句上,象前面大家说的,先count,然后limit,应该不会太慢的.我做过一个黄页系统,里面有大概20万的数据,也是飞快的.
      

  14.   

    只可能有两个原因第一 数据库没有设计好 尤其是索引第二 结合mysql写分页再简单不过了  limit即可
      

  15.   

    不要从1亿的记录中取100万条,是从1亿的记录中检索出来n多条这其中只有25条从server传到用户浏览器。那些操作都是PHP 与 mysql的关系,这两个都是在服务器上的,当然会稍慢一点,不会有很大的差别。
    刚才我的测试数据也是从web 上测出来的。用控制台是测试究竟在mysql中取相同数据是否可以,能不能负担的起如此数据查询
      

  16.   

    mysql数据库和访问sql写得好得话1亿去几百万根本没有问题
      

  17.   

    fish21cn(阿飞) :不是说一定要从1亿条记录中取100万,而是数据库已经达到了这个数据量,而10天的数据没100万也有70、80万,而要求给用户提供1个可以通过时间段查询数据的接口。虽然系统在测试,但不能不考虑最大数据量的时候,如果那样是在欺骗自己呀。
    newly(王二) :你的做法的思路是什么?可以说说吗?
      

  18.   

    bluemeteor(挂月||╭∩╮(︶_︶)╭∩╮) :是没问题,完全可以找出来,分页也可以显示出来,时间还不算慢,但服务器作为web服务器的同时,还有一个更重要的用途,10秒中的100%CPU占用率,其他的就不用做了
      

  19.   

    1.首先建好索引,其次是优化SQL语句,使用好索引,否则等于没建2.如果可能,建立多个数据文件或表空间3.把表拆分成若干小表4.提高硬件设置、网络吞吐量
      

  20.   

    还是头一次听过这么大的数据量。
    那怎么还用MYSQL?
    MYSQL不是比较小型数据库才使用的吗?
      

  21.   

    不知mysql是否支持存储过程,
    使用存储过程应该可以搞定。
      

  22.   

    dcwang(帆洲):好主意!我也有这个想法,就是上面我说的多重分页,正在实行中,是否可行就要看测试结果了。