如果數據不需要實時顯示,可以使用緩存。例如:
$data = getcache();  // 從緩存中讀取
if($data==''){
   // 讀取db獲取數據
  $data = '讀取db獲取';
  setcache($data); // 寫入緩存
}echo $data;

解决方案 »

  1.   

    explain你的sql语句看看索引使用情况
      

  2.   


    这是写入到文件中吗?
    有没有完整的实例供参考一下?是寫在文件中的。http://www.itstrike.cn/Question/PHP-technology-to-achieve-dynamic-cache-instance
      

  3.   

    楼主,可以把数据存到文件或者memcache当中去。
    不过,你在循环中查询,这本身就不应该。你可以把两张表的数据一次全部查询完,再循环,或许比现在的速度要快些。
      

  4.   

    优化sql吧,尽量的一条sql能查出所有内容,然后下面循环展示就好了
      

  5.   

    关联:部门表关联用户表关联日志表关联审核表
    排序:先按部门id排,再按用户id,再...(后面的关系没看透)
    条件:就是你那些,整合一下
    查询字段:只取用到的,比如部门id、部门名、用户id、用户名、...(没用到的字段坚决不取)
    查询条数:这个你没有,建议写一个,大数据查询没有分页很可怕
    这样只用一句语句就能得到数据了
    然后就是遍历数据,由于排过序,所以不用怕会乱
    第一个遍历部门,碰到部门id不同就另起一个table
    每个部门再遍历用户,碰到用户不同就另起一个table
    每个用户...
      

  6.   

    不知道下面这个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
      

  7.   

    desc sql
    关键字段创建索引