又问一个mysql和php工作量的问题 我的做法,采用分解负载的方法,从双方面进行分解,数据库与php共同进行压力的分解,如果一方的压力过大,又极大可能造成死机.如果是数据库在的压力太大,还有可能会造成数据库的损坏.如果是php的压力过大,可能会出现一个页面要求计算好几分钟的现像肯定不合道理.如果你所说的大量有上面我说的情况的话请用第一种,如果没有的话用第二种. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果你能确认“前者的query发送次数可能数十倍于后者”那么应选后者。但是根据你的描述,用mysql的分组子句应该不会“数十倍于后者”,那样的话还是前者好php的数组操作是很强大的,合理的组织数据就可以利用数组函数进行计算,也并不复杂。总之,具体问题要具体对待,不要试图用一个固定的模式来处理所有的事物 我是这样想的:前者“数十倍”其实就是“数十次”属于一种极限情况因为这个次数也是不定的,一份问卷含有问题越多,统计答卷select次数就越多一般估计可能是10~30次左右而且只是用些count()/max(),基本没有计算了,php也管输出而已;但是考虑到很多虚拟主机并发数有限制,用这种方法人多的时候有问题?倾向放弃后者php数组功能确实强大,但偏偏我期望的一个函数没有——count某个数组中含有表达式表示的值的元素个数(这个在数据库中count()就方便多了);但因为打十多年前学basic就灌输了输入/计算/输出三环节分开,我还是比较习惯用这种方法而且这段代码不是最终的,以后会有更高级的统计功能,我希望以后每次增加功能是增加类或某些function,而不是换一种算法所以不能单从现在考虑,现在的记录数再多也不超过100条 1、“因为这个次数也是不定的,一份问卷含有问题越多,统计答卷select次数就越多”假定每回答一个问题为一条记录则 select count(*) from tbl_name group by 问题一次就可得到各问题的回答次数select 问题,答案,count(*) from tbl_name group by 问题,答案一次就可得到各问题的按答案的回答次数2、“后者php数组功能确实强大,但偏偏我期望的一个函数没有——count某个数组中含有表达式表示的值的元素个数(这个在数据库中count()就方便多了);”array_count_values()函数就可满足你的要求<?php$array = array (1, "hello", 1, "world", "hello");print_r(array_count_values ($array));?> 以上程序输出为: Array( [1] => 2 [hello] => 2 [world] => 1) 请注意到该函数是针对一维数组的,所以我上面说到要“合理的组织数据”。要达到使用array_count_values 函数统计数据的目的,你需要按列读取记录而不是按行读取where($row = mysql_fetch_array($rs)) $ar[] = $row;这是按行读取记录where($row = mysql_fetch_array($rs)) list($ar[0][],$ar[1][],...) = $row;这是按列读取记录 响应、负荷、维护、扩展、速度都是第二种好,现在服务器的配置哪会低,用mysql自身处理就不需占用资源吗? 唠叨大兄您说的我都想过array_count_values为什么没有选用是因为它是对所有值count,我需要是指定某个值当需要某个值还是要来一次检索现在脑子有点死了,我想想从把二维数组再分三维数组及多表查询的方向再试试 思前想后还是选第二种,把php代码大规模优化,减少两个循环,结帖 最近遇到个比较诡异的问题,麻烦大家帮忙看下,有哪里遇到过,谢谢 配置Apache遇到的问题 请高手帮忙解一个license文件 转帖:PHP老鸟的自白(1)! 用php开发webservice效率如何 请教一个简单的php+mysql+appserv做的查询 yctin 朋友在吗? 怎么配置PHP才能让它把所有的错误和警告全都显示出来? 求一条SELECT语句!!! php 顶部偶尔出现一个乱码字符? 这里有一个比较搞笑的贴子,呵呵,有兴趣看一下 parent.p.document 为空或不是对象是什么意思啊
但是根据你的描述,用mysql的分组子句应该不会“数十倍于后者”,那样的话还是前者好php的数组操作是很强大的,合理的组织数据就可以利用数组函数进行计算,也并不复杂。总之,具体问题要具体对待,不要试图用一个固定的模式来处理所有的事物
因为这个次数也是不定的,一份问卷含有问题越多,统计答卷select次数就越多
一般估计可能是10~30次左右
而且只是用些count()/max(),基本没有计算了,php也管输出而已;
但是考虑到很多虚拟主机并发数有限制,用这种方法人多的时候有问题?倾向放弃后者php数组功能确实强大,但偏偏我期望的一个函数没有——
count某个数组中含有表达式表示的值的元素个数(这个在数据库中count()就方便多了);
但因为打十多年前学basic就灌输了输入/计算/输出三环节分开,我还是比较习惯用这种方法而且这段代码不是最终的,以后会有更高级的统计功能,
我希望以后每次增加功能是增加类或某些function,而不是换一种算法
所以不能单从现在考虑,现在的记录数再多也不超过100条
假定每回答一个问题为一条记录
则 select count(*) from tbl_name group by 问题
一次就可得到各问题的回答次数
select 问题,答案,count(*) from tbl_name group by 问题,答案
一次就可得到各问题的按答案的回答次数2、“后者php数组功能确实强大,但偏偏我期望的一个函数没有——
count某个数组中含有表达式表示的值的元素个数(这个在数据库中count()就方便多了);”
array_count_values()函数就可满足你的要求
<?php
$array = array (1, "hello", 1, "world", "hello");
print_r(array_count_values ($array));
?> 以上程序输出为: Array
(
[1] => 2
[hello] => 2
[world] => 1
)
请注意到该函数是针对一维数组的,所以我上面说到要“合理的组织数据”。
要达到使用array_count_values 函数统计数据的目的,你需要按列读取记录而不是按行读取
where($row = mysql_fetch_array($rs))
$ar[] = $row;
这是按行读取记录where($row = mysql_fetch_array($rs))
list($ar[0][],$ar[1][],...) = $row;
这是按列读取记录
array_count_values为什么没有选用是因为它是对所有值count,我需要是指定某个值
当需要某个值还是要来一次检索现在脑子有点死了,我想想从把二维数组再分三维数组及多表查询的方向再试试