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

页面执行时间太长,请诸位大大帮忙看看

2013-08-04 
页面执行时间太长,请各位大大帮忙看看!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN

页面执行时间太长,请各位大大帮忙看看


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>订单统计</title>
  <link rel="stylesheet" type="text/css" href="css/ui-lightness/jquery-ui-1.8.2.custom.css" />
<link rel="stylesheet" type="text/css" href="css/style.css" />
  <script src="js/jquery.js" type="text/javascript"></script>
  <script src="js/i18n/grid.locale-ja.js" type="text/javascript"></script>
  <script type='text/javascript' src='js/picnet.table.filter.min.js'></script>
  <script type="text/javascript" src="js/jquery.ui.core.js"></script>
  <script type="text/javascript" src="js/jquery.ui.widget.js"></script>
  <script type="text/javascript" src="js/jquery.ui.position.js"></script>
  <script type="text/javascript" src="js/jquery.ui.autocomplete.js"></script>
<!--<link rel="stylesheet" type="text/css" href="css/css.css" />-->

<!--<script src="js/jquery.jqGrid.min.js" type="text/javascript"></script>-->




<!--<link rel="stylesheet" type="text/css" href="css/style.css" />-->

<style type="text/css">
 * {
  padding:0;
  margin:0;
 }
 body {
font-family:verdana;
font-size:12px;
margin-left: 0px;
margin-top: 0px;
 }
 .content {
  width:1200px;
  margin:20px 10px;
 }
 .content h1 {
  font-family:'??';
  font-size:18px;
  padding-bottom:5px;
 }
 table {
  width:100%;
 }
 th, td {
  padding:6px 0;
 
 }
 th {
  background-color:#accdf4;
  color:#ffffff;
 }
 
 tr {
  background-color:#FFFFFE;
 }
 
 .odd {
  background-color:#FFFAFF;
 }
 
 .highlight {
  background-color:#E0E0E0;
}
.STYLE1 {font-size: 14px}
.STYLE2 {font-size: 16px}
</style>



</head>



<body>


<?PHP
class runtime
{
    var $StartTime = 0;
    var $StopTime = 0;
 
    function get_microtime()
    {
        list($usec, $sec) = explode(' ', microtime());
        return ((float)$usec + (float)$sec);
    }
 
    function start()
    {
        $this->StartTime = $this->get_microtime();
    }
 
    function stop()
    {
        $this->StopTime = $this->get_microtime();
    }
 
    function spent()
    {
        return round(($this->StopTime - $this->StartTime) * 1000, 1);
    }
 
}
$runtime= new runtime;
$runtime->start();
include("conn.php");


$to_date=date('Y-m-d');




//按包装区域来统计邮件总数
function sale_address_package_statistics($date,$account,$package){

$sql="select `number` from `sale_orders` where `account`='$account' and date(`upload_date`) ='$date' GROUP BY `number`";
$Result = mysql_query($sql);
$number="(`number`='' ";
while($rs = mysql_fetch_array($Result))
{
$number.=" or `number`=".$rs[0];
}
$number.=")";

$sql_order_address="SELECT * FROM `sale_orders` T ";
$sql_order_address.="WHERE ".$number;
$sql_order_address.="AND `account` ='$account' ";
if($package=='MIX')
{$sql_order_address.="AND 1<(select count(*) from `sale_orders` where ".$number." AND `account` ='$account' AND `recipient_name`=T.`recipient_name`  AND `ship_address_1`=T.`ship_address_1`) ";
}
else
{
$sql_order_address.="AND 1=(select count(*) from `sale_orders` where ".$number." AND `account` ='$account' AND `recipient_name`=T.`recipient_name`  AND `ship_address_1`=T.`ship_address_1`) ";
$sql_order_address.="AND `package_area`='$package' ";
}
$sql_order_address.="GROUP BY `recipient_name` , `ship_address_1`";

$result_label = mysql_query($sql_order_address);


$order_address=mysql_affected_rows();
if(empty($order_address))
{
return 0;
}
else
{
return $order_address;
}

}

?>
<h2 class="top_title">订单统计</h2>

<div class="digg">
  <table width="200" border="0" cellspacing="0">
    <tr>
      <td width="72%"><table width="95%" border="0" cellspacing="1" bgcolor="#dddddd">
         <tr>
          <td width="15%" align="center">&nbsp;</td>
          <td align="center" bgcolor="eeeeee"  colspan="3">PM_AC</td>
           
          <td align="center" bgcolor="eeeeee" colspan="3">CO_AC</td>
           
            <td align="center" bgcolor="eeeeee" colspan="3">UK_AC</td>
              
            <td align="center" bgcolor="eeeeee" colspan="3">UK_FR</td>
              
               <td align="center" bgcolor="eeeeee" colspan="3">UK_DE</td>
      
        </tr>
        <tr>
          <td width="25%" align="center">&nbsp;</td>
          <td width="5%" align="center" bgcolor="eeeeee">SZ</td>
           <td width="5%" align="center" bgcolor="eeeeee">HK</td>
            <td width="5%" align="center" bgcolor="eeeeee">MIX</td>
           <td width="5%" align="center" bgcolor="eeeeee">SZ</td>
           <td width="5%" align="center" bgcolor="eeeeee">HK</td>
           <td width="5%" align="center" bgcolor="eeeeee">MIX</td>


           <td width="5%" align="center" bgcolor="eeeeee">SZ</td>
           <td width="5%" align="center" bgcolor="eeeeee">HK</td>
            <td width="5%" align="center" bgcolor="eeeeee">MIX</td>
           <td width="5%" align="center" bgcolor="eeeeee">SZ</td>
           <td width="5%" align="center" bgcolor="eeeeee">HK</td>
            <td width="5%" align="center" bgcolor="eeeeee">MIX</td>
           <td width="5%" align="center" bgcolor="eeeeee">SZ</td>
           <td width="5%" align="center" bgcolor="eeeeee">HK</td>
            <td width="5%" align="center" bgcolor="eeeeee">MIX</td>
        </tr>
        <tr>
          <td align="center" bgcolor="eeeeee"><span class="STYLE1"><?PHP echo $to_date;?></span></td>
          <td align="center"><?PHP  echo sale_address_package_statistics($to_date,'PM_AC','SZ');  ?></td>
            <td align="center"><?PHP  echo sale_address_package_statistics($to_date,'PM_AC','HK');  ?></td>
            <td align="center"><?PHP  echo sale_address_package_statistics($to_date,'PM_AC','MIX');  ?></td>
          <td align="center"><?PHP   echo sale_address_package_statistics($to_date,'CO_AC','SZ');  ?></td>
          <td align="center"><?PHP  echo sale_address_package_statistics($to_date,'CO_AC','HK');  ?></td>
          <td align="center"><?PHP  echo sale_address_package_statistics($to_date,'CO_AC','MIX')  ?></td>
          <td align="center"><?PHP   echo sale_address_package_statistics($to_date,'UK_AC','SZ');  ?></td>        


          <td align="center"><?PHP  echo sale_address_package_statistics($to_date,'UK_AC','HK');  ?></td>
          <td align="center"><?PHP  echo sale_address_package_statistics($to_date,'UK_AC','MIX');  ?></td>
          <td align="center"><?PHP   echo sale_address_package_statistics($to_date,'UK_FR','SZ');  ?></td>
          <td align="center"><?PHP  echo sale_address_package_statistics($to_date,'UK_FR','HK');  ?></td>
          <td align="center"><?PHP  echo sale_address_package_statistics($to_date,'UK_FR','MIX');  ?></td>
          <td align="center"><?PHP   echo sale_address_package_statistics($to_date,'UK_DE','SZ');  ?></td>
          <td align="center"><?PHP   echo sale_address_package_statistics($to_date,'UK_DE','HK');  ?></td>
           <td align="center"><?PHP echo sale_address_package_statistics($to_date,'UK_DE','MIX');  ?></td>
        </tr>
       
        
      </table>
      <?PHP  $runtime->stop(); 
  $runtimea= new runtime;
$runtimea->start();
  
  ?>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p>&nbsp;</p></td>
      <td width="28%"></td>
    </tr>
</table>


</div>

<?PHP $runtimea->stop();
echo "邮件统计页面执行时间: ".$runtime->spent()." 毫秒,订单统计页面执行时间:".$runtimea->spent()." 毫秒"; ?>
</body>
</html>



这个页执行要75秒左右,这还只是显示一天的数据,实际上我需要显示一个月的数据


主要是那个查询语句的问题,以下语句如果查询的记录在1700条左右的时候,需要35秒
SELECT * FROM `sale_orders` T 
WHERE (`number`='' or `number`=81) 
AND 1=(select count(*) from `sale_orders` 
where (`number`='' or `number`=81) 
AND `recipient_name`=T.`recipient_name`  
AND `ship_address_1`=T.`ship_address_1`) 
AND `package_area`='SZ' 
GROUP BY `recipient_name` , `ship_address_1`


请问怎么优化啊?显示一天的数据需要75秒,那一个月的数据不是等吃一餐饭还没显示完
[解决办法]
具体情况需具体分析,毕竟不是在做文字游戏
调试查询指令应听从 EXPLAIN 的建议

[解决办法]
尽量少用select * ,需要哪个字段查哪个,还有,加索引
[解决办法]
数据表需要优化。
可否desc给大家看看呢

热点排行