Table des matières
回复讨论(解决方案)
Maison développement back-end tutoriel 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是什么意思?

                            
                        
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Que dois-je faire si j'oublie la phrase mnémonique de mon Ouyi Wallet ? Peut-on encore le trouver ? Que dois-je faire si j'oublie la phrase mnémonique de mon Ouyi Wallet ? Peut-on encore le trouver ? Jul 19, 2024 pm 12:13 PM

Dans le monde du Web3, bien qu'il soit gratuit, il comporte de nombreux dangers. Par conséquent, la première étape pour la sécurité du portefeuille Ouyi est de protéger la clé privée et la phrase mnémonique. Tout le monde connaît l’importance des clés privées, et aujourd’hui l’accent est mis sur les mnémoniques. La phrase mnémonique peut être comprise comme une autre forme de présentation de la clé privée. Avoir la phrase mnémonique équivaut à posséder la clé privée et à contrôler les actifs du portefeuille. On pense également que sa présence est inférieure à celle de la clé privée, et les utilisateurs peuvent oublier la phrase mnémonique d'Ouyi Wallet. Alors, que dois-je faire si j’oublie la phrase mnémonique d’Ouyi Wallet ? Puis-je toujours récupérer mon mnémonique Ouyi Wallet si je l’oublie ? Problèmes auxquels les utilisateurs doivent prêter attention. De manière générale, si la phrase mnémonique est oubliée, elle ne peut pas être récupérée, mais essayez de contacter le service client concerné pour obtenir de l'aide. L'éditeur ci-dessous vous le dira en détail. Que dois-je faire si j'oublie la phrase mnémonique de mon Ouyi Wallet ? Si vous oubliez la phrase mnémonique d'Ouyi Wallet, essayez de la rappeler ou contactez-nous.

Que faire si des flocons de neige apparaissent sur votre téléviseur (Un moyen pratique de résoudre le problème des flocons de neige sur votre téléviseur) Que faire si des flocons de neige apparaissent sur votre téléviseur (Un moyen pratique de résoudre le problème des flocons de neige sur votre téléviseur) Jun 01, 2024 pm 09:44 PM

Dans notre vie quotidienne, la télévision, en tant qu'appareil de divertissement important, souffre souvent de flocons de neige, ce qui affecte notre expérience visuelle. Cet article vous présentera des méthodes pratiques pour résoudre le problème de la neige à la télévision et vous aidera à mieux profiter des programmes télévisés. 1. Analyse des causes des problèmes de flocons de neige Les flocons de neige apparaissant sur les téléviseurs sont généralement causés par des interférences de signal, des problèmes d'antenne ou des sources de signaux TV. 2. Vérifiez si la connexion de l'antenne est lâche. Tout d'abord, vérifiez si la connexion entre le téléviseur et l'antenne est ferme. Si elle est lâche, rebranchez-la. 3. Choisissez une antenne appropriée pour vous assurer que la position et la direction de l'antenne sont correctes. Choisir une antenne avec de bonnes performances peut améliorer la qualité de réception du signal. 4. Ajustez la direction de l'antenne. Trouvez la meilleure direction de réception du signal en tournant ou en ajustant l'angle de l'antenne. 5. Utilisez les signaux de l'antenne intérieure

Résoudre le problème de l'impossibilité d'accéder à Internet même si le haut débit est connecté (dépannage) Résoudre le problème de l'impossibilité d'accéder à Internet même si le haut débit est connecté (dépannage) May 05, 2024 pm 06:01 PM

Internet est devenu un élément indispensable de la vie des gens à l’ère de l’information d’aujourd’hui. Mais nous ne pouvons pas nous connecter et nous rencontrons parfois des problèmes. Cependant, par exemple, le haut débit est déjà connecté. Et prenez les mesures de solution correspondantes, nous devons résoudre le problème étape par étape pour restaurer la connexion réseau dans ce cas. Confirmez l'état de connexion de l'appareil : si le téléphone mobile et les autres appareils ont été correctement connectés au réseau haut débit, vérifiez l'ordinateur pour vous assurer que la connexion au réseau sans fil ou au réseau filaire est normale. 2. Redémarrez le périphérique haut débit : réinitialisez le périphérique et rétablissez la connexion, attendez quelques minutes, puis rallumez-le, ou essayez d'éteindre le routeur ou le modem haut débit. 3. Vérifiez le numéro de compte haut débit et le mot de passe : Pour éviter de ne pas pouvoir accéder à Internet en raison d'un compte ou d'un mot de passe incorrect, assurez-vous que le numéro de compte haut débit et le mot de passe saisis sont corrects. 4. Vérifiez D

Que faire si pagefile.sys prend trop de place Que faire si pagefile.sys prend trop de place Feb 20, 2024 am 09:01 AM

Que dois-je faire si pagefile.sys prend trop de place ? Lors de l'utilisation de l'ordinateur, nous rencontrons souvent une mémoire insuffisante. Afin de résoudre ce problème, le système d'exploitation transférera une partie des données de la mémoire vers un fichier spécial sur le disque. Ce fichier est pagefile.sys. Mais parfois, nous constaterons que le fichier pagefile.sys est très volumineux et occupe trop d’espace disque. Alors, comment résoudre ce problème ? Tout d'abord, nous devons clarifier le fichier pagefile.sys

Que dois-je faire si l'icône dans le coin inférieur droit de Win11 ne répond pas lorsque je clique dessus ? Que dois-je faire si l'icône dans le coin inférieur droit de Win11 ne répond pas lorsque je clique dessus ? Jun 29, 2023 pm 01:54 PM

Que dois-je faire si l'icône dans le coin inférieur droit de Win11 ne répond pas lorsque je clique dessus ? L'icône de raccourci de la tâche en cours d'exécution peut être affichée dans le coin inférieur droit de l'ordinateur. Cliquez simplement sur l'icône pour continuer à exécuter la tâche, ce qui est très pratique. Cependant, de nombreux utilisateurs constatent que la touche de raccourci de l'icône de tâche dans le coin inférieur droit du système Win11 ne répond pas après avoir cliqué dessus. Aujourd'hui, l'éditeur vous proposera un tutoriel sur la façon de résoudre le problème du clic sur le raccourci dans le coin inférieur droit de Win11. Les utilisateurs qui en ont besoin devraient y jeter un œil rapidement. Que dois-je faire si l'icône dans le coin inférieur droit de Win11 ne répond pas ? 1. Tout d'abord, appuyez sur le bouton « Win » du clavier, puis cliquez sur « Paramètres ». 2. Cliquez ensuite sur « À propos » sous les paramètres système. 3. Recherchez ensuite la police bleue « Paramètres système avancés » sous les spécifications de l'appareil.

Que dois-je faire si le logiciel exécuté sur mon ordinateur Win7 est incompatible ? Que dois-je faire si le logiciel exécuté sur mon ordinateur Win7 est incompatible ? Jul 13, 2023 pm 06:49 PM

Que dois-je faire si le logiciel d'exploitation Win7 est incompatible ? Lorsque nous copions un programme de l’ancien système vers win7 pour l’installer, son installation échouera. Il s'agit d'un problème d'incompatibilité avec le logiciel d'exploitation Win7. Alors que dois-je faire si le logiciel d’exploitation Win7 n’est pas compatible ? Ici, je partagerai avec vous des solutions à l'incompatibilité du logiciel d'exploitation win7. Que faire si le logiciel exécuté sur votre ordinateur Win7 est incompatible : 1. Cliquez avec le bouton droit sur le logiciel ou le programme incompatible. 2. Cliquez sur l'option Propriétés dans la liste du menu contextuel. 3. Cliquez sur l'onglet Compatibilité dans la fenêtre contextuelle des propriétés. 4. Recherchez l'option Exécuter ce programme en mode de compatibilité sous l'onglet Compatibilité. 5. Cochez l'option Exécuter ce programme en mode de compatibilité comme indiqué ! 6. C'est fait ! Remarque : Cette méthode n'est pas valable pour certains logiciels

Comment copier avec une imprimante HP Comment copier avec une imprimante HP Jan 06, 2024 am 08:44 AM

HP est une marque d'imprimantes bien connue. Elle a lancé de nombreux styles et modèles d'imprimantes, chacun avec des fonctions et des utilisations différentes. Cependant, les fonctions les plus élémentaires concernent l’impression et la copie de documents. Ici, nous prenons le modèle d'imprimante HP v50157037-1 comme exemple pour présenter comment effectuer des opérations de copie. Tout d'abord, assurez-vous que votre imprimante HP est connectée à un ordinateur ou à un réseau et que le pilote est installé. Ensuite, ouvrez le document que vous souhaitez copier et placez-le sur la plaque de numérisation de l'imprimante. Ensuite, ouvrez le panneau de configuration de l'imprimante HP, qui se trouve généralement sur le panneau de commande de l'imprimante ou via les paramètres de l'imprimante sur votre ordinateur. Sur le panneau de commande, vous verrez des boutons ou des options de menu pour

Comment résoudre le problème de la disparition de l'icône réseau de Windows 7 Comment résoudre le problème de la disparition de l'icône réseau de Windows 7 Dec 31, 2023 pm 08:11 PM

De nombreux amis se demandent quoi faire si l'icône du réseau est manquante dans Win7 ? Aujourd'hui, l'éditeur vous apportera la solution au problème de l'absence de l'icône réseau sur votre ordinateur Win7. Jetons-y un coup d'œil. Solution à l'icône réseau manquante dans Windows 7 : 1. Cliquez avec le bouton droit sur l'icône de connexion réseau sur le côté droit de la barre des tâches du bureau et sélectionnez "Ouvrir le Centre Réseau et partage". 2. Après avoir entré, sélectionnez « Modifier les paramètres de l'adaptateur » sur la gauche pour voir s'il existe une « Connexion réseau sans fil ». S'il y a une croix rouge sur l'icône, double-cliquez sur l'icône de connexion réseau sans fil, conservez la carte réseau sans fil. allumez l'ordinateur portable, puis le réseau. L'icône de connexion devrait apparaître. 3. Si la méthode ci-dessus ne parvient toujours pas à résoudre le problème, maintenez enfoncés "win" + "R" pour afficher la boîte de commande d'exécution. 4. 'Dans la zone de saisie

See all articles