Inhaltsverzeichnis
回复讨论(解决方案)
Heim Backend-Entwicklung PHP-Tutorial 一个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是什么意思?

                            
                        
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was soll ich tun, wenn ich meinen Ouyi Wallet-Mnemoniksatz vergesse? Ist es noch zu finden? Was soll ich tun, wenn ich meinen Ouyi Wallet-Mnemoniksatz vergesse? Ist es noch zu finden? Jul 19, 2024 pm 12:13 PM

Obwohl die Web3-Welt kostenlos ist, birgt sie viele Gefahren. Daher besteht der erste Schritt für die Sicherheit der Ouyi-Wallet darin, den privaten Schlüssel und die mnemonische Phrase zu schützen. Jeder weiß, wie wichtig private Schlüssel sind, und heute liegt der Schwerpunkt auf Mnemonik. Die mnemonische Phrase kann als eine andere Form der Darstellung des privaten Schlüssels verstanden werden. Der Besitz der mnemonischen Phrase ist gleichbedeutend mit dem Besitz des privaten Schlüssels und der Kontrolle über das Wallet-Vermögen. Es wird auch angenommen, dass seine Präsenz geringer ist als die des privaten Schlüssels und Benutzer möglicherweise die mnemonische Phrase von Ouyi Wallet vergessen. Was soll ich also tun, wenn ich die mnemonische Phrase von Ouyi Wallet vergesse? Kann ich meine Ouyi Wallet-Mnemonik trotzdem abrufen, wenn ich sie vergesse? Probleme, auf die Benutzer achten müssen. Wenn die Mnemonikphrase vergessen wird, kann sie im Allgemeinen nicht wiederhergestellt werden. Wenden Sie sich jedoch an das zuständige Kundendienstpersonal, um Hilfe zu erhalten. Der Redakteur weiter unten verrät es Ihnen im Detail. Was soll ich tun, wenn ich meinen Ouyi Wallet-Mnemoniksatz vergesse? Wenn Sie den mnemonischen Satz von Ouyi Wallet vergessen haben, versuchen Sie ihn bitte abzurufen oder kontaktieren Sie uns.

Was tun, wenn auf Ihrem Fernseher Schneeflocken erscheinen (Eine praktische Möglichkeit, das Problem der Schneeflocken auf Ihrem Fernseher zu lösen) Was tun, wenn auf Ihrem Fernseher Schneeflocken erscheinen (Eine praktische Möglichkeit, das Problem der Schneeflocken auf Ihrem Fernseher zu lösen) Jun 01, 2024 pm 09:44 PM

In unserem täglichen Leben leidet der Fernseher als wichtiges Unterhaltungsgerät oft unter Schneeflocken, die unser Seherlebnis beeinträchtigen. Dieser Artikel stellt Ihnen praktische Methoden zur Lösung des TV-Schneeproblems vor und hilft Ihnen, TV-Programme besser zu genießen. 1. Analyse der Ursachen von Schneeflockenproblemen Schneeflocken, die auf Fernsehgeräten erscheinen, werden im Allgemeinen durch Signalstörungen, Antennenprobleme oder TV-Signalquellen verursacht. 2. Prüfen Sie, ob die Antennenverbindung locker ist. Überprüfen Sie zunächst, ob die Verbindung zwischen dem Fernseher und der Antenne fest ist. Wenn sie locker ist, stecken Sie sie wieder ein. 3. Wählen Sie eine geeignete Antenne. Stellen Sie sicher, dass die Position und Ausrichtung der Antenne korrekt ist. Die Wahl einer Antenne mit guter Leistung kann die Signalempfangsqualität verbessern. 4. Passen Sie die Richtung der Antenne an, indem Sie den Winkel der Antenne drehen oder anpassen. 5. Verwenden Sie Zimmerantennensignale

Lösen Sie das Problem, dass Sie trotz bestehender Breitbandverbindung nicht auf das Internet zugreifen können (Fehlerbehebung). Lösen Sie das Problem, dass Sie trotz bestehender Breitbandverbindung nicht auf das Internet zugreifen können (Fehlerbehebung). May 05, 2024 pm 06:01 PM

Das Internet ist im heutigen Informationszeitalter zu einem unverzichtbaren Bestandteil des Lebens der Menschen geworden. Aber wir können nicht online gehen und manchmal stoßen wir auf Probleme, zum Beispiel ist die Breitbandverbindung bereits vorhanden. Und ergreifen Sie entsprechende Lösungsmaßnahmen. In diesem Fall müssen wir das Problem Schritt für Schritt beheben, um die Netzwerkverbindung wiederherzustellen. Bestätigen Sie den Verbindungsstatus des Geräts: Überprüfen Sie, ob das Mobiltelefon und andere Geräte ordnungsgemäß mit dem Breitbandnetzwerk verbunden sind. Überprüfen Sie den Computer, um sicherzustellen, dass die drahtlose Netzwerk- oder kabelgebundene Netzwerkverbindung normal ist. 2. Starten Sie das Breitbandgerät neu: Setzen Sie das Gerät zurück und stellen Sie die Verbindung erneut her, warten Sie einige Minuten und schalten Sie es dann wieder ein. Versuchen Sie, den Breitbandrouter oder das Modem auszuschalten. 3. Überprüfen Sie die Breitband-Kontonummer und das Passwort: Um zu vermeiden, dass Sie aufgrund eines falschen Kontos oder Passworts nicht auf das Internet zugreifen können, stellen Sie sicher, dass die eingegebene Breitband-Kontonummer und das Passwort korrekt sind. 4. Überprüfen Sie D

Was tun, wenn pagefile.sys zu viel Platz beansprucht? Was tun, wenn pagefile.sys zu viel Platz beansprucht? Feb 20, 2024 am 09:01 AM

Was soll ich tun, wenn pagefile.sys zu viel Speicherplatz beansprucht? Bei der Nutzung des Computers kommt es häufig vor, dass nicht genügend Speicher vorhanden ist. Um dieses Problem zu lösen, überträgt das Betriebssystem einen Teil der Daten im Speicher in eine spezielle Datei auf der Festplatte. Diese Datei heißt pagefile.sys. Manchmal stellen wir jedoch fest, dass die Datei pagefile.sys sehr groß ist und zu viel Speicherplatz beansprucht. Wie lösen wir dieses Problem? Zuerst müssen wir die Datei pagefile.sys klären

Was soll ich tun, wenn das Symbol in der unteren rechten Ecke von Win11 nicht reagiert, wenn ich darauf klicke? Was soll ich tun, wenn das Symbol in der unteren rechten Ecke von Win11 nicht reagiert, wenn ich darauf klicke? Jun 29, 2023 pm 01:54 PM

Was soll ich tun, wenn das Symbol in der unteren rechten Ecke von Win11 nicht reagiert, wenn ich darauf klicke? Das Verknüpfungssymbol für die aktuell ausgeführte Aufgabe kann in der unteren rechten Ecke des Computers angezeigt werden. Klicken Sie einfach auf das Symbol, um die Aufgabe fortzusetzen, was sehr praktisch ist. Viele Benutzer stellen jedoch fest, dass die Tastenkombination für das Aufgabensymbol in der unteren rechten Ecke des Win11-Systems nicht reagiert, nachdem sie darauf geklickt hat. Heute gibt Ihnen der Editor ein Tutorial, wie Sie das Problem beim Klicken auf die Verknüpfung in der unteren rechten Ecke von win11 lösen können. Benutzer in Not sollten schnell einen Blick darauf werfen. Was soll ich tun, wenn das Symbol in der unteren rechten Ecke von win11 nicht reagiert? 1. Drücken Sie zuerst die Schaltfläche „Win“ auf der Tastatur und klicken Sie dann auf „Einstellungen“. 2. Klicken Sie dann unter Systemeinstellungen auf „Info“. 3. Anschließend finden Sie unter den Gerätespezifikationen die „Erweiterte Systemeinstellungen“ in blauer Schrift.

Was soll ich tun, wenn die auf meinem Win7-Computer ausgeführte Software nicht kompatibel ist? Was soll ich tun, wenn die auf meinem Win7-Computer ausgeführte Software nicht kompatibel ist? Jul 13, 2023 pm 06:49 PM

Was soll ich tun, wenn die Win7-Betriebssystemsoftware nicht kompatibel ist? Wenn wir ein Programm zur Installation vom alten System auf Win7 kopieren, schlägt die Installation fehl. Dies ist ein Inkompatibilitätsproblem mit der Win7-Betriebssystemsoftware. Was soll ich also tun, wenn die Win7-Betriebssystemsoftware nicht kompatibel ist? Hier werde ich Lösungen für die Inkompatibilität der Win7-Betriebssystemsoftware mit Ihnen teilen. Was tun, wenn die auf Ihrem Win7-Computer ausgeführte Software inkompatibel ist: 1. Klicken Sie mit der rechten Maustaste auf die inkompatible Software oder das inkompatible Programm. 2. Klicken Sie in der Popup-Menüliste auf die Option Eigenschaften. 3. Klicken Sie im Popup-Eigenschaftenfenster auf die Registerkarte Kompatibilität. 4. Suchen Sie auf der Registerkarte „Kompatibilität“ nach der Option „Dieses Programm im Kompatibilitätsmodus ausführen“. 5. Aktivieren Sie die Option „Dieses Programm im Kompatibilitätsmodus ausführen“ wie gezeigt! 6. Fertig! Hinweis: Diese Methode ist für einige Software nicht gültig

So kopieren Sie mit einem HP-Drucker So kopieren Sie mit einem HP-Drucker Jan 06, 2024 am 08:44 AM

HP ist eine bekannte Druckermarke. Sie haben viele verschiedene Druckertypen und -modelle mit jeweils unterschiedlichen Funktionen und Verwendungszwecken auf den Markt gebracht. Die grundlegendsten Funktionen dienen jedoch dem Drucken und Kopieren von Dokumenten. Hier nehmen wir das Modell HP Drucker v50157037-1 als Beispiel, um die Durchführung von Kopiervorgängen vorzustellen. Stellen Sie zunächst sicher, dass Ihr HP-Drucker mit einem Computer oder Netzwerk verbunden und der Treiber installiert ist. Öffnen Sie anschließend das Dokument, das Sie kopieren möchten, und legen Sie es auf die Scanplatte des Druckers. Öffnen Sie dann das Bedienfeld des HP-Druckers, das Sie normalerweise auf dem Bedienfeld des Druckers oder in den Druckereinstellungen auf Ihrem Computer finden. Auf dem Bedienfeld sehen Sie einige Schaltflächen oder Menüoptionen für

So lösen Sie das Problem, dass das Windows 7-Netzwerksymbol verschwindet So lösen Sie das Problem, dass das Windows 7-Netzwerksymbol verschwindet Dec 31, 2023 pm 08:11 PM

Viele Freunde fragen sich, was zu tun ist, wenn das Netzwerksymbol in Win7 fehlt? Heute bringt Ihnen der Editor die Lösung für das Problem, dass das Netzwerksymbol auf Ihrem Win7-Computer fehlt. Schauen wir es uns an. Lösung für das fehlende Netzwerksymbol in Windows 7: 1. Klicken Sie mit der rechten Maustaste auf das Netzwerkverbindungssymbol auf der rechten Seite der Desktop-Taskleiste und wählen Sie „Netzwerk- und Freigabecenter öffnen“. 2. Wählen Sie nach der Eingabe links „Adaptereinstellungen ändern“, um zu sehen, ob eine „Drahtlose Netzwerkverbindung“ vorhanden ist. Wenn sich auf dem Symbol ein rotes Kreuz befindet, doppelklicken Sie auf das Symbol für die drahtlose Netzwerkverbindung und behalten Sie die drahtlose Netzwerkkarte Schalten Sie den Laptop ein und dann das Netzwerk. Das Verbindungssymbol sollte erscheinen. 3. Wenn die obige Methode das Problem immer noch nicht lösen kann, halten Sie „win“ + „R“ gedrückt, um das Befehlsfeld „Ausführen“ aufzurufen. 4. 'Im Eingabefeld

See all articles