→ MOONRAKER:Premature optimization is the root of all evil. 05/23 16:08
※ 引述《eiping (一平兄)》之銘言:
: 這個函數這樣做法,跟我之前的其實完全一樣,只要用到一次函數,就會讀取一次資料庫
: 我希望的做法是,讀取一次資料庫,把資料放進陣列,之後下面都讀取陣列,就不用每次
: 都讀取資料庫,從記憶體(陣列)讀取資料,總是比從硬碟(資料庫)來的快吧?!
: 還是其實原先的做法沒錯,當頻繁讀取某個資料表取得對應,MYSQL會把資料放進記憶體
: 去存取,所以我不用考慮這些事情,就照原先的做法去做就好~?
用 Java 連 database,自己用 JDBC 連
通常要注意哏是 connection open 緩慢的問題
然後套個 connection pool 之類的就沒事了
PHP 有沒有這方面的問題,我不太清楚 [死]
如果單純看「下 select 語法」→「DB 回傳資料」這段的時間
(也就是不考慮 open connection 的速度)
嗯... 這時間真的很重要嗎?
我現在手上的案子,程式要在一台據說不是很快的機器
用 browser 作 UI 操控實際硬體作動(下略)
然後因為 ooxx 因素,所以要在上頭塞會員資料提供查詢
那麼要是實際 online 的話,資料數量以萬筆為單位很正常
我就問了:這樣查詢速度沒問題嗎?
老人前輩說:二十年前用 386 跑 dBase
query 幾十萬筆資料也可以在一秒內反應完畢
我:...... 報告是
當然,如果好幾個 table 要 join 來 join 去,這就難講
(可以作 view 之類的鬼玩意來協助?)
反過來說...
你今天真的要省,那就是要用類似 singleton 的方式
讓這個陣列資料在整個系統(而不是單一個 PHP 的 page cycle)都用得到
這樣才能建一次就用好多次...
我不確定 PHP 做不做得到,但是很明確的這會有兩個哏
1. 如果資料量很小,db 找起來也不會花太久
人類真的敢覺得出來差異嗎?
2. 如果資料量很大,你不擔心 memory resource 被吃光光嗎?
(Java GC 表示:)
然後你還得保持陣列跟 database 資料的同步性...... blahblah
還不如像 g 版主說的方向,找 database cache(是這樣叫的嗎?)
或是......
奔雷手文泰來:
插到了以後在說吧,自然有法律會制裁他,
你們兩個敢快打好不好,我們都快悶死了 ...
--
錢鍾書: 說出來的話
http://www.psmonkey.org
比不上不說出來的話
Java 版 cookcomic 版
只影射著說不出來的話
and more......
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.25.0.70
先說,我沒寫過什麼正規 PHP 程式
就當我是來騙文章數,聽聽就好