作者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/m.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