|
|
回复讨论(解决方案)
都建了索引,结果一点作用都没有
如果??不需要???示,可以使用?存。
例如:
$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是什么意思?