[請益] PHP/Mysql效能問題請教

看板PHP作者 (巨蟹)時間10年前 (2015/07/10 18:00), 編輯推噓1(105)
留言6則, 5人參與, 最新討論串1/1
目前手上有一個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://www.ptt.cc/bbs/PHP/M.1436522430.A.1B9.html

07/10 18:50, , 1F
如果log_time欄位是timestamp且有index的話 直接用sql
07/10 18:50, 1F

07/10 20:29, , 2F
你的explans sql跟你說什麼? multi-column index有使用嗎?
07/10 20:29, 2F

07/11 20:01, , 3F
log_id 是自動遞增的吧? 正常是用 order by + limit
07/11 20:01, 3F

07/11 20:43, , 4F
謝謝大家,後來想了一下 他本來是撈出來array再用array
07/11 20:43, 4F

07/11 20:43, , 5F
max(),萬一有幾百筆 不就只是自找麻煩…
07/11 20:43, 5F

07/11 23:25, , 6F
這種事情不在SQL做還滿神秘的
07/11 23:25, 6F
文章代碼(AID): #1LdvU-6v (PHP)
文章代碼(AID): #1LdvU-6v (PHP)