首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

大量数据分页有关问题

2012-04-06 
大量数据分页问题就是将一些信息从表t*读取进来,然后在另一个页面添加自己所关注的信息,也就是browse表的

大量数据分页问题
就是将一些信息从表t*读取进来,然后在另一个页面添加自己所关注的信息,也就是browse表的东西,比如关注的事youxi或者qq。然后对t*读取的数据里面有此类字的整行数据进行读取。之前我做的是读十条进来然后判断一下,有的读出来,就是下面的代码,这样就出现有些页一条都没有,有些页只有一两条。之后我用select   *   from     t*   where   Op_h   like   %row[brow]   or   like   row   ............limit   $page   $pagesize。这样倒是可以,但是数据量大,添加的关注多了根本就读不出数据。希望各位大侠能给一些好的意见和建议。


include( "../inc/nois.php ");
include( "../inc/db_conn.php ");
$conn   =   new   dbClass();
$conn-> Connect();

$sql_page   =   "select   count(*)   from   t*;
$rs_page   =   $conn-> RetuenRow($sql_page);
$count   =   mysql_fetch_row($rs_page);

$url=$_SERVER[ 'REQUEST_URI '];
$url=parse_url($url);
$url=$url[path];

//当页显示数目
$pagesize=10;
//得到当前最大页数
$pageindex=$count[0]/$pagesize;
if($_GET)
{
$pagenum=$_GET;
$page=($pagenum-1)*$pagesize;
$page.= ', ';
}

?>

<link   href= "../images/style_main.css "   rel= "stylesheet "   type= "text/css ">
<SCRIPT   language= "JavaScript ">
      <!--   Begin
      //全选
      function   checkAll()   {
              var   objs   =   window.document.getElementsByTagName( "input ");
        for(var       i=0;i <objs.length;i++){
          if   (objs[i].type   ==   "checkbox "   &&   objs[i].disabled==false){
                      objs[i].checked   =   true;
          }
        }
      }
      //全不选
      function   uncheckAll()   {
                var   objs   =   window.document.getElementsByTagName( "input ");
        for(var       i=0;i <objs.length;i++){
          if   (objs[i].type   ==   "checkbox "   &&   objs[i].disabled==false   ){
            objs[i].checked   =   false;
          }
        }
      }
      //将用户选择的记录全部存放在数组里面。
      function     showValue()
{
var   a=new     Array();
var   checkBoxes=   document.getElementsByName( "checkBoxName ")
var   idx=0;
for(var   i=0;i   <checkBoxes.length;i++)
{
if(checkBoxes[i].checked==true)
{
    a[idx++]=checkBoxes[i].value;
}
}
setCookie( "cheValue ",a);
}
//将数组设置为Cookie。
     
        </SCRIPT>
<form     method= "post "   name= "form "   action= "checkdel.php?cpu_action=zh_m ">
<table   width= "100% "   border= "0 "   align= "center "   cellpadding= "4 "   cellspacing= "1 ">
     
    <tr   align= "center "   bgcolor= "#006699 "   >


            <td   width= "3% "> 选择 </td>
            <td   width= "10% "> 号 </td>
            <td   width= "6% "> 名 </td>
            <td   width= "8% "> ** </td>
            <td   width= "8% "> ** </td>
            <td   width= "8% "> 系统 </td>
            <td   width= "10% "> 类型 </td>
 
       
        </tr>

<?php  
$sql_count   =   "select   count(*)   from   t*   ";
$rs_cut   =   $conn-> RetuenRow($sql_count);
$counts   =   mysql_fetch_row($rs_cut);
$i=0;
if($counts[0]!=0)
{

$sql= "select   *   from   t*   order   by   T_time   desc   limit   $page   $pagesize ";
$query=$conn-> RetuenRow($sql);


while($row   =   mysql_fetch_array($query)){
$info   =   $row[ 'Tracker_information '];
$a=explode( "   ",   $info);
$yanse=0;


//==================在此页对关注的信息进行标注===============================================================================================//

$aq=$row[ 'T_e '];//作为两个表的主键

$sql_counto   =   "select   *   from   op_s   where   Op_s   =   '$aq ' ";   //获取该cpu序列号的浏览记录
$rs_counto=$conn-> RetuenRow($sql_counto);
$rowo   =   mysql_fetch_array($rs_counto);
$du=$rowo[ 'Op_h '];

if($du!=NULL){
$sql_brows   =   "select   *   from   browse ";
$queryb=$conn-> RetuenRow($sql_brows);
while($rowdd   =   mysql_fetch_array($queryb))
{

$con2   =   explode($rowdd[ 'b_attention '],$rowo[ 'Op_history ']);

if   (count($con2)> 1){
$yanse=1;
$i++;

}
}
}


//标注的代码到此为止

?>
<?php

if($yanse==1){

?>
   
  <?php
echo   " <TR     align= 'center '     bgcolor= '#DFDFFF '> <td> <input   name= 'checkBoxName[] '     type= 'checkbox '   style= 'background-color:#DFDFFF '     value= ".$row[ 'T_id ']. "   /> </td> ";

?>

<?php
  if($row[ 'T_s ']==1){  
echo   " <td   > <font   color= '#FF0000 '> ".$row[ 'T_e ']. " </font> </td> ";
?>
  <?php   }   else{
  echo   " <td   > <font   color= '#000000 '> ".$row[ 'T_e ']. " </font> </td> ";
  }?>

<?php

echo   " <td   > ".$row[ 'T_b ']. " </td> ";
echo   " <td   > ".$row[ 'T_m ']. " </td> ";
echo   " <td   > ".$row[ 'T_p ']. " </td> ";


echo   " <td   > ".$row[ 'T_t ']. " </td> ";
?>

</tr>
    <?php
    }
    }
  }else
  {
  $str_echo= " <tr   > <td   align= 'center '   colspan=12> 暂时信息 </td> </tr> ";
        echo   $str_echo;
  }  
    ?>
<!-------->
    <tr   align= "center "   bgcolor= "#006699 ">
        <td   colspan= "12 "> <?php   include( "../inc/page_data.php ")?> </td>
    </tr>
    <tr     bgcolor= "#DFDFFF ">
    <td   colspan= "12 ">
    <div   style= "height:20px; "> &nbsp; <strong> 选择:&nbsp;
    <a   href= "javascript:checkAll(); "> 全选 </a> &nbsp;-&nbsp;
    <a   href= "javascript:uncheckAll(); "> 取消全选 </a> &nbsp;-&nbsp;
    <a   href= "dellog.php?action=delall "   onClick= "return   confirm( '确定清空所有的记录吗? '); "> 清空表 </a> &nbsp;-&nbsp;


     
</td>
    </tr>
</table>
</form>

<table   >
   
</table>




[解决办法]
在高数据量的情况下,limit 10000以后就会是个问题,更别说LIKE了,这时候就要考虑分表了
[解决办法]
数据量大 是有多大 不要动不动出什么问题就到数据那里去
数据量大 再大也不会大到读不出来 只会慢而已 超时了吗? 报什么错
代码的格式能不能贴好点?
[解决办法]
能不能不在你的数据库去读,能不能选存起来,我看discaz源码就是这样的!
[解决办法]
可以考虑一下nosql

或者不用数据库,对每个用户创建一个文件(打散到多个目录中),把关注都写入文件中;单用户的关键估计几百条很多了

热点排行