目錄
回复讨论(解决方案)
首頁 後端開發 php教程 一个PHP页面中有多条查询语句,导致页面打开速度特别慢,怎么办

一个PHP页面中有多条查询语句,导致页面打开速度特别慢,怎么办

Jun 23, 2016 pm 01:37 PM

下面的代码有点乱,我简单解释一下吧。首先从部门表中查询出部门记录,然后根据部门ID查询出用户表中部门对应的用户,然后根据用户ID查询出日志表中用户对应的日志,然后再根据日志ID查询出审核表中领导的审核记录……,大概就是这样一层调用一层,导致打开页面需要1分钟左右。

我估计是扫描数据表的次数过多造成的,但是不知道该怎么解决?

    //查询部门
    $sql_depart="SELECT * FROM depart WHERE gid>0 AND gid     $query_depart=$db->query($sql_depart);
    while($d=$db->fetch_array($query_depart)){
?>
    


    
    
    

                  //查询人员
           
            $sql_user="SELECT * FROM members WHERE flag             $query_user=$db->query($sql_user);
            while($u=$db->fetch_array($query_user)){
        ?>        
    
       
        
            
        
        
一个PHP页面中有多条查询语句,导致页面打开速度特别慢,怎么办  

                         //查询所有日志
            $sql="SELECT c1.*,c2.* FROM log c1 LEFT JOIN log_time c2 ON (c1.time_id=c2.tid) WHERE c2.year='".$year."' AND c1.userid='".$u['uid']."' AND c2.end_date             $query=$db->query($sql);
            while($row=$db->fetch_array($query)){
                
            ?>
                
                    
                        
                        
                    


回复讨论(解决方案)

都建了索引,结果一点作用都没有

如果??不需要???示,可以使用?存。

例如:
$data = getcache();  // ??存中?取
if($data==''){
   // ?取db?取??
  $data = '?取db?取';
  setcache($data); // ?入?存
}

echo $data;

看看用到索引没有,
在一个尽量减少不需要查询的内容,或者一次少查点

如果??不需要???示,可以使用?存。

例如:
$data = getcache();  // ??存中?取
if($data==''){
   // ?取db?取??
  $data = '?取db?取';
  setcache($data); // ?入?存
}

echo $data;



这是写入到文件中吗?
有没有完整的实例供参考一下?

explain你的sql语句看看索引使用情况


如果??不需要???示,可以使用?存。

例如:
$data = getcache();  // ??存中?取
if($data==''){
   // ?取db?取??
  $data = '?取db?取';
  setcache($data); // ?入?存
}

echo $data;



这是写入到文件中吗?
有没有完整的实例供参考一下?

是?在文件中的。

http://www.itstrike.cn/Question/PHP-technology-to-achieve-dynamic-cache-instance

楼主,可以把数据存到文件或者memcache当中去。


不过,你在循环中查询,这本身就不应该。你可以把两张表的数据一次全部查询完,再循环,或许比现在的速度要快些。

循环嵌套查询很可怕

个人愚见,你这嵌套循环查询效率很低,建议合并之

优化sql吧,尽量的一条sql能查出所有内容,然后下面循环展示就好了

关联:部门表关联用户表关联日志表关联审核表
排序:先按部门id排,再按用户id,再...(后面的关系没看透)
条件:就是你那些,整合一下
查询字段:只取用到的,比如部门id、部门名、用户id、用户名、...(没用到的字段坚决不取)
查询条数:这个你没有,建议写一个,大数据查询没有分页很可怕
这样只用一句语句就能得到数据了
然后就是遍历数据,由于排过序,所以不用怕会乱
第一个遍历部门,碰到部门id不同就另起一个table
每个部门再遍历用户,碰到用户不同就另起一个table
每个用户...

不知道下面这个SQL能不能让你的速度快些(不保证该SQL正确可行)

SELECT d.*,m.*,l.* FROM depart d 
left join members m on m.flag left join (SELECT c1.*,c2.* FROM log c1 LEFT JOIN log_time c2 ON (c1.time_id=c2.tid) WHERE c2.year='".$year."'  AND c2.end_date WHERE d.gid>0 AND d.gid

写成一个语句了~

desc sql
关键字段创建索引

不知道下面这个SQL能不能让你的速度快些(不保证该SQL正确可行)

SELECT d.*,m.*,l.* FROM depart d 
left join members m on m.flag left join (SELECT c1.*,c2.* FROM log c1 LEFT JOIN log_time c2 ON (c1.time_id=c2.tid) WHERE c2.year='".$year."'  AND c2.end_date WHERE d.gid>0 AND d.gid

我试了一下,查询效率是挺快的,不用等,但是在页面里该怎么调用?

我的需求是先显示部门,然后显示部门里的所有用户,以此类推。但是现在成了部门、用户和其他的都一起显示出来了。

关联:部门表关联用户表关联日志表关联审核表
排序:先按部门id排,再按用户id,再...(后面的关系没看透)
条件:就是你那些,整合一下
查询字段:只取用到的,比如部门id、部门名、用户id、用户名、...(没用到的字段坚决不取)
查询条数:这个你没有,建议写一个,大数据查询没有分页很可怕
这样只用一句语句就能得到数据了
然后就是遍历数据,由于排过序,所以不用怕会乱
第一个遍历部门,碰到部门id不同就另起一个table
每个部门再遍历用户,碰到用户不同就另起一个table
每个用户...



第一个遍历部门,碰到部门id不同就另起一个table
每个部门再遍历用户,碰到用户不同就另起一个table

id不同就另起一个table是什么意思?

                            
                        
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

歐意錢包助記詞忘了怎麼辦?還能找回嗎? 歐意錢包助記詞忘了怎麼辦?還能找回嗎? Jul 19, 2024 pm 12:13 PM

歐意錢包助記詞忘了怎麼辦?還能找回嗎?

電視出現雪花怎麼辦(解決電視雪花問題的實用方法) 電視出現雪花怎麼辦(解決電視雪花問題的實用方法) Jun 01, 2024 pm 09:44 PM

電視出現雪花怎麼辦(解決電視雪花問題的實用方法)

pagefile.sys佔用太大怎麼辦 pagefile.sys佔用太大怎麼辦 Feb 20, 2024 am 09:01 AM

pagefile.sys佔用太大怎麼辦

解決寬頻已連線卻上不了網路的問題(排除故障) 解決寬頻已連線卻上不了網路的問題(排除故障) May 05, 2024 pm 06:01 PM

解決寬頻已連線卻上不了網路的問題(排除故障)

win11右下角圖示點了沒反應怎麼辦 win11右下角圖示點了沒反應怎麼辦 Jun 29, 2023 pm 01:54 PM

win11右下角圖示點了沒反應怎麼辦

win7系統電腦運作軟體不相容怎麼辦 win7系統電腦運作軟體不相容怎麼辦 Jul 13, 2023 pm 06:49 PM

win7系統電腦運作軟體不相容怎麼辦

惠普印表機怎麼影印 惠普印表機怎麼影印 Jan 06, 2024 am 08:44 AM

惠普印表機怎麼影印

win11安全中心怎麼不見了怎麼辦 win11安全中心怎麼不見了怎麼辦 Jun 29, 2023 pm 08:57 PM

win11安全中心怎麼不見了怎麼辦

See all articles