Jadual Kandungan
回复讨论(解决方案)
Rumah pembangunan bahagian belakang tutorial 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是什么意思?

                            
                        
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah yang perlu saya lakukan jika saya terlupa frasa mnemonik Ouyi Wallet saya? Adakah ia masih boleh ditemui? Apakah yang perlu saya lakukan jika saya terlupa frasa mnemonik Ouyi Wallet saya? Adakah ia masih boleh ditemui? Jul 19, 2024 pm 12:13 PM

Dalam dunia Web3, walaupun ia percuma, ia penuh dengan bahaya Oleh itu, langkah pertama dalam keselamatan dompet Ouyi adalah untuk melindungi kunci peribadi dan frasa mnemonik. Semua orang tahu kepentingan kunci peribadi, dan hari ini penekanan adalah pada mnemonik. Frasa mnemonik boleh difahami sebagai satu lagi bentuk pembentangan kunci persendirian Mempunyai frasa mnemonik adalah bersamaan dengan memiliki kunci persendirian dan mengawal aset dompet. Ia juga dianggap bahawa kehadirannya lebih rendah daripada kunci persendirian, dan pengguna mungkin terlupa frasa mnemonik Ouyi Wallet. Jadi apakah yang perlu saya lakukan jika saya terlupa frasa mnemonik Ouyi Wallet? Bolehkah saya mendapatkan semula mnemonik Ouyi Wallet saya jika saya terlupa? Isu yang perlu diberi perhatian oleh pengguna. Secara umumnya, jika frasa mnemonik terlupa, ia tidak boleh diambil, tetapi cuba hubungi kakitangan perkhidmatan pelanggan yang berkaitan untuk mendapatkan bantuan. Editor di bawah akan memberitahu anda secara terperinci. Apakah yang perlu saya lakukan jika saya terlupa frasa mnemonik Ouyi Wallet saya? Jika anda terlupa frasa mnemonik Ouyi Wallet, sila cuba ingat semula atau hubungi kami.

Perkara yang perlu dilakukan jika kepingan salji muncul pada TV anda (Cara praktikal untuk menyelesaikan masalah kepingan salji pada TV anda) Perkara yang perlu dilakukan jika kepingan salji muncul pada TV anda (Cara praktikal untuk menyelesaikan masalah kepingan salji pada TV anda) Jun 01, 2024 pm 09:44 PM

Dalam kehidupan seharian kita, TV, sebagai peranti hiburan yang penting, sering mengalami kepingan salji, yang menjejaskan pengalaman menonton kita. Artikel ini akan memperkenalkan anda kepada kaedah praktikal untuk menyelesaikan masalah salji TV dan membantu anda menikmati program TV dengan lebih baik. 1. Analisis punca masalah kepingan salji Kepingan salji yang muncul di TV biasanya disebabkan oleh gangguan isyarat, masalah antena atau sumber isyarat TV. 2. Periksa sama ada sambungan antena longgar Pertama, periksa sama ada sambungan antara TV dan antena teguh Jika longgar, pasangkannya semula. 3. Pilih antena yang sesuai untuk memastikan kedudukan dan arah antena adalah betul Memilih antena dengan prestasi yang baik boleh meningkatkan kualiti penerimaan isyarat. 4. Laraskan arah antena. Cari arah penerimaan isyarat terbaik dengan memutar atau melaraskan sudut antena. 5. Gunakan isyarat antena dalaman

Menyelesaikan masalah tidak dapat mengakses Internet walaupun jalur lebar disambungkan (penyelesaian masalah) Menyelesaikan masalah tidak dapat mengakses Internet walaupun jalur lebar disambungkan (penyelesaian masalah) May 05, 2024 pm 06:01 PM

Internet telah menjadi sebahagian daripada kehidupan manusia pada zaman maklumat hari ini. Tetapi kami tidak boleh mendapatkan dalam talian, dan kadang-kadang kami menghadapi beberapa masalah, contohnya, jalur lebar sudah disambungkan. Dan mengambil langkah penyelesaian yang sepadan, kita perlu menyelesaikan masalah langkah demi langkah untuk memulihkan sambungan rangkaian dalam kes ini. Sahkan status sambungan peranti: Sama ada telefon mudah alih dan peranti lain telah disambungkan dengan betul ke rangkaian jalur lebar, periksa komputer untuk memastikan rangkaian wayarles atau sambungan rangkaian berwayar adalah normal. 2. Mulakan semula peranti jalur lebar: Tetapkan semula peranti dan sediakan semula sambungan, tunggu beberapa minit dan kemudian hidupkannya semula Cuba matikan penghala jalur lebar atau modem. 3. Semak nombor akaun jalur lebar dan kata laluan: Untuk mengelakkan tidak dapat mengakses Internet kerana akaun atau kata laluan yang salah, pastikan nombor akaun jalur lebar dan kata laluan yang dimasukkan adalah betul. 4. Semak D

Perkara yang perlu dilakukan jika pagefile.sys mengambil terlalu banyak ruang Perkara yang perlu dilakukan jika pagefile.sys mengambil terlalu banyak ruang Feb 20, 2024 am 09:01 AM

Apakah yang perlu saya lakukan jika pagefile.sys menggunakan terlalu banyak ruang Dalam proses menggunakan komputer, kita sering menghadapi memori yang tidak mencukupi. Untuk menyelesaikan masalah ini, sistem pengendalian akan memindahkan sebahagian daripada data dalam memori ke fail khas pada cakera Fail ini ialah pagefile.sys. Tetapi kadangkala, kita akan mendapati bahawa fail pagefile.sys adalah sangat besar dan mengambil terlalu banyak ruang cakera. Jadi, bagaimana kita menyelesaikan masalah ini? Pertama, kita perlu menjelaskan fail pagefile.sys

Apakah yang perlu saya lakukan jika ikon di sudut kanan bawah win11 tidak bertindak balas apabila saya mengkliknya? Apakah yang perlu saya lakukan jika ikon di sudut kanan bawah win11 tidak bertindak balas apabila saya mengkliknya? Jun 29, 2023 pm 01:54 PM

Apakah yang perlu saya lakukan jika ikon di sudut kanan bawah win11 tidak bertindak balas apabila saya mengkliknya? Ikon pintasan untuk tugas yang sedang dijalankan boleh dipaparkan di sudut kanan bawah komputer Hanya klik pada ikon untuk terus menjalankan tugas, yang sangat mudah. Walau bagaimanapun, ramai pengguna mendapati bahawa kekunci pintasan ikon tugas di sudut kanan bawah sistem win11 tidak bertindak balas selepas mengkliknya. Hari ini, editor akan memberi anda tutorial tentang cara menyelesaikan masalah mengklik pintasan di sudut kanan bawah win11. Pengguna yang memerlukan perlu segera melihat. Apakah yang perlu saya lakukan jika ikon di sudut kanan bawah win11 tidak bertindak balas 1. Pertama, kita tekan butang "menang" pada papan kekunci, dan kemudian klik "Tetapan" di sana? 2. Kemudian klik "Perihal" di bawah tetapan sistem. 3. Kemudian cari "Tetapan sistem lanjutan" dalam fon biru di bawah spesifikasi peranti.

Apakah yang perlu saya lakukan jika perisian yang berjalan pada komputer win7 saya tidak serasi? Apakah yang perlu saya lakukan jika perisian yang berjalan pada komputer win7 saya tidak serasi? Jul 13, 2023 pm 06:49 PM

Apakah yang perlu saya lakukan jika perisian pengendalian win7 tidak serasi? Apabila kita menyalin program dari sistem lama ke win7 untuk pemasangan, ia akan gagal dipasang. Ini ialah isu ketidakserasian dengan perisian pengendalian win7. Jadi apakah yang perlu saya lakukan jika perisian pengendalian win7 tidak serasi? Di sini, saya akan berkongsi dengan anda penyelesaian kepada ketidakserasian perisian pengendalian win7. Perkara yang perlu dilakukan jika perisian yang berjalan pada komputer win7 anda tidak serasi: 1. Klik kanan perisian atau program yang tidak serasi. 2. Klik pilihan Properties dalam senarai menu pop timbul. 3. Klik tab Keserasian dalam tetingkap sifat pop timbul. 4. Cari pilihan Jalankan program ini dalam mod keserasian di bawah tab Keserasian. 5. Semak pilihan Jalankan program ini dalam mod keserasian seperti yang ditunjukkan! 6. Selesai! Nota: Kaedah ini tidak sah untuk sesetengah perisian

Bagaimana untuk menyalin dengan pencetak HP Bagaimana untuk menyalin dengan pencetak HP Jan 06, 2024 am 08:44 AM

HP ialah jenama pencetak yang terkenal Mereka telah melancarkan banyak gaya dan model pencetak yang berbeza, setiap satu dengan fungsi dan kegunaan yang berbeza. Walau bagaimanapun, fungsi paling asas adalah untuk mencetak dan menyalin dokumen. Di sini, kami mengambil model pencetak HP v50157037-1 sebagai contoh untuk memperkenalkan cara melakukan operasi penyalinan. Mula-mula, pastikan pencetak HP anda disambungkan ke komputer atau rangkaian dan pemacu dipasang. Seterusnya, buka dokumen yang ingin anda salin dan letakkan pada plat pengimbasan pencetak. Kemudian, buka panel kawalan pencetak HP, yang biasanya boleh didapati pada panel kawalan pencetak atau melalui tetapan pencetak pada komputer anda. Pada panel kawalan, anda akan melihat beberapa butang atau pilihan menu untuk

Bagaimana untuk menyelesaikan masalah ikon rangkaian Windows 7 hilang Bagaimana untuk menyelesaikan masalah ikon rangkaian Windows 7 hilang Dec 31, 2023 pm 08:11 PM

Ramai rakan bertanya apa yang perlu dilakukan jika ikon rangkaian hilang dalam win7? Hari ini, editor akan membawakan kepada anda penyelesaian kepada masalah bahawa ikon rangkaian hilang dalam komputer Windows 7 Mari kita lihat. Penyelesaian kepada ikon rangkaian yang hilang dalam Windows 7: 1. Klik kanan ikon sambungan rangkaian di sebelah kanan bar tugas desktop dan pilih "Buka Rangkaian dan Pusat Perkongsian". 2. Selepas masuk, pilih "Tukar Tetapan Penyesuai" di sebelah kiri untuk melihat jika terdapat "Sambungan Rangkaian Tanpa Wayar". hidupkan komputer riba dihidupkan, dan kemudian rangkaian Ikon sambungan akan muncul. 3. Jika kaedah di atas masih tidak dapat menyelesaikan masalah, tekan dan tahan "win" + "R" untuk membuka kotak arahan run. 4. 'Dalam kotak input

See all articles