$maxRows_trt = 15;(每页显示条数)
$pageNum_trt = 0;
if (isset($_GET['pageNum_trt'])) {
  $pageNum_trt = $_GET['pageNum_trt'];
}
$startRow_trt = $pageNum_trt * $maxRows_trt;
mysql_select_db($database_okbuy, $okbuy);
$query_trt = "SELECT *FROM `trt` WHERE `lock_state` = '1' ORDER BY date DESC ";
$query_limit_trt = sprintf("%s LIMIT %d, %d", $query_trt, $startRow_trt, $maxRows_trt);
 
上面是部分代码 现在的问题是数据排序的过程中卡死 直接导致mysql使用内存飙升 最后网站也打不开 通过修改代码是否能够解决问题 应该怎么样修改 或者是其他的问题?

解决方案 »

  1.   

    $pageNum_trt = 1;-------------------------------------------
    $startRow_trt = ($pageNum_trt -1) * $maxRows_trt;
    mysql_select_db($database_okbuy, $okbuy);
    $query_trt = "SELECT *FROM `trt` WHERE `lock_state` = '1' ORDER BY date DESC  limit $startRow_trt, $maxRows_trt";
    试试,卡死不大可能 啊
      

  2.   

    那也不会卡死吧  我们看到的只是sql语句还不知道他后面怎么执行的呢!
    $query_limit_trt = sprintf("%s LIMIT %d, %d", $query_trt, $startRow_trt, $maxRows_trt);
    有没有 echo $query_limit_trt;是什么吗?
    echo sql语句出来 直接到mysql执行看看会怎样。
      

  3.   

    explain 加你的sql 在数据库看看、
      

  4.   

    单拿出你的sql 在数据库执行一下。
    看看是语句的问题还是代码的问题、
      

  5.   

    SELECT * FROM `trt` WHERE lock_state = '1' ORDER BY date DESC LIMIT 0 , 15
    你在命令行下执行会卡死吗?
      

  6.   

    这不是要分页吗? 你要根据页数 偏移量查询 一次就15条 怎么可能会死呢?
    SELECT * FROM `trt` WHERE lock_state = '1' ORDER BY date DESC LIMIT 0 , 15
      

  7.   

    SELECT * FROM `trt` WHERE lock_state = '1' ORDER BY date DESC LIMIT 0 , 15
    数据量
    lock_state 值得分布
    date  值分布
    表结构