一個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
|
|