一個PHP頁面中有多條查詢語句,導致頁面開啟速度特別慢,怎麼處理

來源:互聯網
上載者:User
一個PHP頁面中有多條查詢語句,導致頁面開啟速度特別慢,怎麼辦
下面的代碼有點亂,我簡單解釋一下吧。首先從部門表中查詢出部門記錄,然後根據部門ID查詢出使用者表中部門對應的使用者,然後根據使用者ID查詢出日誌表中使用者對應的日誌,然後再根據日誌ID查詢出審核表中領導的審核記錄……,大概就是這樣一層調用一層,導致開啟頁面需要1分鐘左右。

我估計是掃描資料表的次數過多造成的,但是不知道該怎麼解決?

//查詢部門
$sql_depart="SELECT * FROM depart WHERE gid>0 AND gid<15 ORDER BY gid";
$query_depart=$db->query($sql_depart);
while($d=$db->fetch_array($query_depart)){
?>





//查詢人員

$sql_user="SELECT * FROM members WHERE flag<5 and groupid='".$d['gid']."' ORDER BY flag desc";
$query_user=$db->query($sql_user);
while($u=$db->fetch_array($query_user)){
?>






//查詢所有日誌
$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<'".date("Y-m-d")."' ORDER BY c2.tid desc";
$query=$db->query($sql);
while($row=$db->fetch_array($query)){

?>







引用:
Quote: 引用:

如果數據不需要實時顯示,可以使用緩存。

例如:
$data = getcache(); // 從緩存中讀取
if($data==''){
// 讀取db獲取數據
$data = '讀取db獲取';
setcache($data); // 寫入緩存
}

echo $data;


這是寫入到檔案中嗎?
有沒有完整的執行個體供參考一下?































  • ------解決思路----------------------是寫在檔案中的。http://www.itstrike.cn/Question/PHP-technology-to-achieve-dynamic-cache-instance------解決思路----------------------頂樓上的..不過可以理解因為以前我也是這麼幹...後面會玩多維陣列後,一切都變的簡單..還有一種死辦法,分N多頁面來做,好比,點擊部門,進入使用者頁面,再依據使用者頁面再點擊使用者進入使用者操作記錄頁面...------解決思路----------------------關聯:部門表關聯使用者表關聯日誌表關聯審核表排序:先按部門id排,再按使用者id,再...(後面的關係沒看透)條件:就是你那些,整合一下查詢欄位:只取用到的,比如部門id、部門名、使用者id、使用者名稱、...(沒用到的欄位堅決不取)查詢條數:這個你沒有,建議寫一個,大資料查詢沒有分頁很可怕這樣只用一句語句就能得到資料了然後就是遍曆資料,由於排過序,所以不用怕會亂第一個遍曆部門,碰到部門id不同就另起一個table每個部門再遍曆使用者,碰到使用者不同就另起一個table每個使用者...------解決思路----------------------不知道下面這個SQL能不能讓你的速度快些(不保證該SQL正確可行)SELECT d.*,m.*,l.* FROM depart d left join members m on m.flag<5 and m.groupid = d.gid 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<'".date("Y-m-d")."') l on l.userid = m.uid WHERE d.gid>0 AND d.gid<15 ORDER BY d.gid,m.flag desc,l.tid desc


    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.