墨鱼最近几天发现服务器的MYSQL的CPU使用率会偶尔飙升到100%,于是开启MYSQL得慢查询发现是结合项查询导致的:
一般来说对于小数据量的数据大家可以不用管的,奈何墨鱼网站业务中这个模型里面的数据太多,于是到了不的不优化的地步了。
墨鱼结合项使用的是单选模式,那么我们先把结合项字段设置为:TINYINT,长度1,比如:(注意:这个修改不会改变字段里面的内容,但是会导致后台对应字段数据不能重新对应。如果有需要一定要先做转换,不会的可以联系墨鱼制作对应的转换代码。)
1==红色
2==橙色
3==黄色
4==绿色
然后打开/e/action/ListInfo.php文件找到:
$listandf.=$doandor.$andr[$i]." LIKE '%".$andval."%'";
改成:
if (false !== strstr($emod_r[$mid]['checkboxf'], ','.$andr[$i].',')) { $listandf.=$doandor.$andr[$i]." LIKE '%".$andval."%'"; }else{ $listandf .= $doandor.$andr[$i] . (is_numeric($andval) ? "=".$andval : "='".$andval."'"); }
然后结合项里记得改成对应的:
##红色,1##橙色,2##黄色,3##绿色,4
这样就可以了。转换后,没有再出现过MYSQL帝国CMS结合项查询过慢的问题。
查看原内容