扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
tp开启事务: M()-startTrans(); M()-commit();M()-rollback();#thinkphp3.2
创新互联-专业网站定制、快速模板网站建设、高性价比丰南网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式丰南网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖丰南地区。费用合理售后完善,10余年实体公司更值得信赖。
有很多种方法可以优化:
数据库设置主从,进行读写分离;
数据分表,如按月份分表,需要统计数据就查总表;
优化查询语句,适当增加索引;
字段优化,对不常用或者没有必要的字段可以考虑放在另外一张表里,避免单表数据过大,字段过多。
2个方面:sql语句优化,缓存。
sql语句中select * from 表 不需要全部信息的话就尽量不要用*,要哪个字段就写哪个,不要怕写。
如今php中有许多的缓存方式,有模板缓存,sql查询缓存。代表有smarty和memcache,当然,其他还有很多优秀的缓存方式,我就不多说了。
我只针对你这个做优化吧。。
第一个不要用select * 这样的sql语句,你需要什么字段就写哪些字段
都需要的话,你都写出来,select * 效率很低的。。
第二个如果说你的后台中对这些数据的变动不是很频繁
然后你可以将查询结果存入memcahe中
我写一段伪代码
$mem_key="all";
$res = $memcache-get($mem_key);
//如果没有存入memcache中
if (empty($res){
//sql语句可以用left jion on关联查询
$aaa="select b.字段1,b.字段2...from btb as b left jion tb as b.id=t.id";
$bb=$mysql-_query($aaa);
while(!!$_rows=$mysql-_fetch_array_list($bb)){
//do something
$res ....
}
//结果存入memecahed中
$memcache-set($mem_key,$res,0,超时时间);
}
$res就是你获取的结果。。
你这段代码基本可以这样。。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流