찾다
백엔드 개발PHP 튜토리얼一个PHP页面中有多条查询语句,导致页面打开速度特别慢,怎么办

下面的代码有点乱,我简单解释一下吧。首先从部门表中查询出部门记录,然后根据部门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으로 문의하세요.
pagefile.sys占用太大怎么办pagefile.sys占用太大怎么办Feb 20, 2024 am 09:01 AM

pagefile.sys占用太大怎么办在使用电脑的过程中,我们经常会遇到内存不足的情况。为了解决这个问题,操作系统会将部分内存中的数据转移到磁盘上的一个特殊文件中,这个文件就是pagefile.sys。但有时候,我们会发现pagefile.sys文件的大小很大,占用了太多的磁盘空间。那么,我们该如何解决这个问题呢?首先,我们需要明确pagefile.sys文

电视出现雪花怎么办(解决电视雪花问题的实用方法)电视出现雪花怎么办(解决电视雪花问题的实用方法)Jun 01, 2024 pm 09:44 PM

在我们日常生活中,电视作为重要的娱乐设备,经常会出现雪花现象,影响我们观看体验。本文将为大家介绍解决电视雪花问题的实用方法,帮助大家更好地享受电视节目。1.雪花问题的原因分析电视出现雪花一般是由于信号干扰、天线问题或电视信号源等原因引起的。2.检查天线连接是否松动首先检查电视机与天线之间的连接是否牢固,如有松动应重新插好。3.选择合适的天线确保天线的位置和方向正确,选择一款性能良好的天线可以改善信号接收质量。4.调整天线方向通过旋转或调整天线角度的方式,找到最佳的信号接收方向。5.使用室内天线信

解决宽带已连接却上不了网的问题(排除故障)解决宽带已连接却上不了网的问题(排除故障)May 05, 2024 pm 06:01 PM

互联网已经成为人们生活中不可或缺的一部分,在如今的信息时代。但是上不了网、有时候我们会遇到一些烦恼,然而,比如宽带已经连接好了。并采取相应的解决措施,我们需要逐步排查问题,以恢复网络连接,这种情况下。确认设备连接状态:手机等设备是否已正确认接到宽带网络、检查电脑,确保无线网络或者有线网络连接正常。2.重启宽带设备:以重置设备并重新建立连接、待数分钟后重新开启、尝试关闭宽带路由器或者调制解调器。3.检查宽带账号和密码:避免因为账号或密码错误导致无法上网,确保输入的宽带账号和密码正确无误。4.检查D

win7系统计算机运行软件不兼容怎么办win7系统计算机运行软件不兼容怎么办Jul 13, 2023 pm 06:49 PM

win7操作软件不兼容怎么办?当我们将一个程序从旧系统复制到win7进行安装时,就会出现无法安装的现象。这是win7操作软件不兼容的问题。那么win7操作软件不兼容怎么办呢?在这里,我将与您分享win7操作软件不兼容的解决方案。win7系统计算机运行软件不兼容怎么办:1.右击不兼容的软件或程序。2.单击弹出菜单列表中的属性选项。3.单击弹出的属性窗口中的兼容性选项卡。4.在兼容性选项卡下找到以兼容性模式运行该程序选项。5.检查以兼容模式运行该程序选项,如图所示!6.完成!注:有些软件这种方法无效

win11右下角图标点了没反应怎么办win11右下角图标点了没反应怎么办Jun 29, 2023 pm 01:54 PM

win11右下角图标点了没反应怎么办?电脑右下角可以显示目前正在运行任务的快捷图标,只要点击该图标,就可以继续运行任务,非常方便。但是有不少用户发现win11系统右下角的任务图标快捷键点击以后没反应,这是怎么一回事呢?今天小编就来给大家说明一下win11右下角快捷方式点击没用解决教程,有需要的用户们赶紧来看一下吧。win11右下角图标点了没反应怎么办1、首先我们按下键盘的“win”按钮,然后点击其中的“设置”。2、然后点击系统设置下方的“关于”。3、然后在设备规格下方找到蓝色字体的“高级系统设置

惠普打印机怎么复印惠普打印机怎么复印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、’在输入框

win11安全中心怎么不见了怎么办win11安全中心怎么不见了怎么办Jun 29, 2023 pm 08:57 PM

win11安全中心怎么不见了怎么办?在win11系统中,安全中心是一个非常重要的部分,在这个部分中,用户们可以进行电脑安全性防护的工作,那么有些时候我们需要进行电脑安全管理工作时却发现win11的安全中心不见了怎么办?很多小伙伴不知道怎么详细操作,小编下面整理了win11安全中心消失解决步骤,如果你感兴趣的话,跟着小编一起往下看看吧!win11安全中心消失解决步骤1、按下win+x组合键,或者右键点击“开始”,点击“WindowsPowerShell(管理员)”;2、以管理员权限打开powers

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음