作者hareion08 (巨蟹)
看板PHP
标题[请益] PHP/Mysql效能问题请教
时间Fri Jul 10 18:00:25 2015
目前手上有一个API的Project
功能方面都正常
公司想要对其程式/资料库方面进行优化(减少处理请求的时间)
(基本常见优化他已经有做或是避免使用某些耗时的方法)
看了一周的code 也慢慢了解他的程式逻辑
台风假的今天开始着手试着更新看看
目前想请教的问题如下:
1.
有一个table大约如:
--------------------------
-log_id-log_type-log_time-
- 1 - 1 - 2014 -
- 2 - 1 - 2011 -
- 3 - 1 - 2010 -
- 4 - 2 - 2015 -
- 5 - 2 - 2012 -
--------------------------
请问如果先把资料select出来成array
在用max()找出 最接近现在的log
或是用sql
select max(`log_time`) from table group by log_type
直接找出最接近现在的log
哪一个方法效能最高? 或是根本差不多...
2.我用microtime(true)-$start的方式查看执行所花费时间
但是第二次执行会比第一次快许多
上网查了一下发现是
因为使用innodb当引擎
第二次查询会跑到buffer_pool
(我的query_cache有关闭)
3.第一次做效能优化的工作 恳请大家指教
不知道该如何暂时修改此设定
环境是xampp
Apache 2.4.12, MySQL 5.6.24, PHP 5.5.24
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.160.216.78
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/PHP/M.1436522430.A.1B9.html
1F:→ TigerShen: 如果log_time栏位是timestamp且有index的话 直接用sql 07/10 18:50
2F:推 cjoe: 你的explans sql跟你说什麽? multi-column index有使用吗? 07/10 20:29
3F:→ xdraculax: log_id 是自动递增的吧? 正常是用 order by + limit 07/11 20:01
4F:→ hareion08: 谢谢大家,後来想了一下 他本来是捞出来array再用array 07/11 20:43
5F:→ hareion08: max(),万一有几百笔 不就只是自找麻烦… 07/11 20:43
6F:→ MOONRAKER: 这种事情不在SQL做还满神秘的 07/11 23:25