目錄
回复讨论(解决方案)
首頁 後端開發 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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 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

在Web3世界中,雖然自由但充滿危險,為此歐易錢包安全的第一步就是保護私鑰和助記詞。私鑰都知道其重要性,今天強調助記詞。助記詞可以理解為私鑰的另一種展現形式,擁有了助記詞相當於擁有了私鑰​​並控制了錢包資產。也以為其存在感低於私鑰,會出現用戶忘記歐易錢包助記詞。那麼歐意錢包助記詞忘了怎麼辦?究竟歐意錢包助記詞忘了還能找回來嗎?使用戶需要關注的問題。通常來說助記詞忘了無法找回,但盡量聯絡相關客服人員幫忙。下面小編為大家詳細說。歐意錢包助記詞忘了怎麼辦?歐易錢包助記詞忘了建議嘗試回憶,或是聯繫

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

在我們日常生活中,電視作為重要的娛樂設備,常常會出現雪花現象,影響我們觀看體驗。本文將為大家介紹解決電視雪花問題的實用方法,幫助大家更能享受電視節目。 1.雪花問題的原因分析電視出現雪花一般是由於訊號幹擾、天線問題或電視訊號源等原因所造成的。 2.檢查天線連接是否鬆動先檢查電視機與天線之間的連接是否牢固,如有鬆動應重新插好。 3.選擇合適的天線確保天線的位置和方向正確,選擇一款性能良好的天線可以改善訊號接收品質。 4.調整天線方向透過旋轉或調整天線角度的方式,找到最佳的訊號接收方向。 5.使用室內天線信

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

網路已成為人們生活中不可或缺的一部分,在現今的資訊時代。但上不了網、有時候我們會遇到一些煩惱,然而,例如寬頻已經連接好了。並採取相應的解決措施,我們需要逐步排查問題,以恢復網路連接,這種情況下。確認設備連線狀態:手機等設備是否已確認接到寬頻網路、檢查電腦,確保無線網路或有線網路連線正常。 2.重新啟動寬頻設備:以重設裝置並重新建立連線、待數分鐘後重新開啟、嘗試關閉寬頻路由器或數據機。 3.檢查寬頻帳號和密碼:避免因為帳號或密碼錯誤而無法上網,確保輸入的寬頻帳號和密碼正確無誤。 4.檢查D

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

pagefile.sys佔用太大怎麼辦在使用電腦的過程中,我們常常會遇到記憶體不足的情況。為了解決這個問題,作業系統會將部分記憶體中的資料轉移到磁碟上的一個特殊檔案中,而這個檔案就是pagefile.sys。但有時候,我們會發現pagefile.sys檔案的大小很大,佔用了太多的磁碟空間。那麼,我們該如何解決這個問題呢?首先,我們需要明確pagefile.sys文

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

win11右下角圖示點了沒反應怎麼辦?電腦右下角可以顯示目前正在運行任務的快捷圖標,只要點擊該圖標,就可以繼續運行任務,非常方便。但有不少用戶發現win11系統右下角的任務圖示快速鍵點擊以後沒反應,這是怎麼一回事呢?今天小編就來跟大家說明一下win11右下角快捷方式點擊沒用解決教程,有需要的用戶們趕緊來看一下吧。 win11右下角圖示點了沒反應怎麼辦1、首先我們按下鍵盤的「win」按鈕,然後點選其中的「設定」。 2、然後點選系統設定下方的「關於」。 3.然後在設備規格下方找到藍色字體的“高級系統設置

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

win7操作軟體不相容怎麼辦?當我們將一個程式從舊系統複製到win7進行安裝時,就會出現無法安裝的現象。這是win7操作軟體不相容的問題。那麼win7操作軟體不相容怎麼辦呢?在這裡,我將與您分享win7操作軟體不相容的解決方案。 win7系統電腦運作軟體不相容怎麼辦:1.右鍵點選不相容的軟體或程式。 2.點選彈出式選單清單中的屬性選項。 3.點選彈出的屬性視窗中的相容性標籤。 4.在相容性標籤下找到以相容性模式執行該程式選項。 5.檢查以相容模式運行該程式選項,如圖所示! 6.完成!註:有些軟體這種方法無效

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

惠普是一家知名的印表機品牌,他們推出了許多不同款式和型號的印表機,每個型號都有各自不同的功能和用途。但是,最基本的功能還是用來列印和影印文件。在這裡,我們以惠普印表機v50157037-1型號為例,向大家介紹如何進行影印操作。首先,確保你的惠普印表機已經連接到電腦或網絡,並且已經安裝了驅動程式。接下來,打開你要影印的文件,並將其放置在印表機的掃描板上。然後,打開惠普印表機的控制面板,通常可以在印表機的操作面板或透過電腦上的印表機設定找到。在控制面板上,你會看到一些按鍵或選單選項,用於

如何解決Windows 7網路圖示消失問題 如何解決Windows 7網路圖示消失問題 Dec 31, 2023 pm 08:11 PM

很多的朋友都在問win7網路圖示不見了怎麼辦?今天小編就為大家帶來了win7電腦網路圖示不見了解決方法一起來看看吧。 win7網路圖示不見了解決方法:1、滑鼠右鍵點擊桌面工作列右側的網路連線圖標,選擇「開啟網路和共用中心」。 2、進去後選左邊的“更改適配器設定”,看看是否存在“無線網路連接”,圖標上面如果有紅叉,就雙擊無線網路連線圖標,保持筆記本上的無線網卡開關是開啟狀態,然後網絡連接圖標應該就會出現了。 3.如果以上方法仍然無法解決這個問題,按住“win”+“R”,調出運行命令框。 4、’在輸入框

See all articles