成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓
當(dāng)前位置:工程項(xiàng)目OA系統(tǒng) > 泛普各地 > 江西OA系統(tǒng) > 鷹潭OA > 鷹潭網(wǎng)站建設(shè)公司
PHP/MYSQL 查詢(xún)大數(shù)據(jù)/遍歷表
申請(qǐng)免費(fèi)試用、咨詢(xún)電話(huà):400-8352-114
鷹潭網(wǎng)站建設(shè)www.diyphp.netPHP:PHP 5.3.6 (cli) (built: Jun 15 2011 16:29:50)
MYSQL:5.1.51
假如我們有的一張表有幾百萬(wàn)或幾萬(wàn)萬(wàn)的記載,我們要運(yùn)用 PHP 將一切的記載都獲取過(guò)來(lái)(遍歷數(shù)據(jù)表)進(jìn)行處置。查詢(xún)語(yǔ)句:

<span style="COLOR: rgb(0,128,0)"> SELECT * FROM largetable;
PS:為了證實(shí)上面的做法是最佳的方法,我測(cè)驗(yàn)運(yùn)用 largetable 中的一個(gè)字段做 where ,以及 LIMIT,OFFSET 。上面那種 WHERE 取得后果很慢,固然用了索引。后面這種 LIMIT 可以讓你有一種想死的覺(jué)得(有興致可以調(diào)查下,《分頁(yè)優(yōu)化》)。
以 MYSQL 以及PDO_MYSQL 為例,測(cè)驗(yàn)直接運(yùn)用以下代碼,必定會(huì)呈現(xiàn)超內(nèi)存的狀況:
<span style="COLOR: rgb(0,128,0)"> $result = mysql_query($sql);
<span style="COLOR: rgb(0,128,0)"> while ($rowset = mysql_fetch_assoc($mysql)) {
<span style="COLOR: rgb(0,128,0)"> ...
<span style="COLOR: rgb(0,128,0)"> $stmt = $dbh->prepare($sql);
<span style="COLOR: rgb(0,128,0)"> $stmt->execute();
<span style="COLOR: rgb(0,128,0)"> while ($row = $stmt->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT)) {
<span style="COLOR: rgb(0,128,0)"> ...
緣由在于在查詢(xún)執(zhí)行后,PHP 的MYSQL、PDO_MYSQL 將查詢(xún)后果悉數(shù)緩存到了客戶(hù)端,也就是 PHP 執(zhí)行地點(diǎn)機(jī)械上。如許假如我們要 SELECT * FROM LARGETABLE 查詢(xún)的記載在 百萬(wàn)以上的時(shí)分 ,緩存的后果就會(huì)十分大,超出 PHP 運(yùn)用內(nèi)存。所認(rèn)為了防止如許狀況就需求封閉客戶(hù)端的緩存。
這里供應(yīng)二個(gè)測(cè)試劇本,辨別為 MYSQL、PDO_MYSQL 封閉緩存后查詢(xún)樣例。點(diǎn)擊下載:mysql_query
以下是 PDO_MYSQL 在查詢(xún) ~100W 以及 ~200W (540M)數(shù)據(jù)后果(由于我的 PHP 內(nèi)存運(yùn)用設(shè)置了1G所以沒(méi)掛:) )
可以很分明的看出在緩存后果后占用內(nèi)存驚人…,當(dāng)我們處置萬(wàn)萬(wàn)數(shù)據(jù)的時(shí)分必掛。
以下是 PDO_MYSQL 封閉緩存查詢(xún) ~200W 的數(shù)據(jù)后果。這下處置萬(wàn)萬(wàn)以及E級(jí)的數(shù)據(jù)的時(shí)分,對(duì)內(nèi)存透露表現(xiàn)很淡定。
PS:假如你要處置的數(shù)據(jù)就幾十萬(wàn),你照樣調(diào)大點(diǎn)內(nèi)存好了。比方 MYSQL:
mysql_unbuffered_query() 的益處是有價(jià)值的:在 mysql_unbuffered_query() 返回的后果集之上不克不及運(yùn)用 mysql_num_rows() 和 mysql_data_seek()。此外在向 MySQL 發(fā)送一條新的 SQL 查詢(xún)之前,必需提取失落一切未緩存的 SQL 查詢(xún)所發(fā)生的后果行。
本站推薦
- 1《PHP項(xiàng)目跟蹤管理系統(tǒng)操作流程指南:高效管理項(xiàng)目進(jìn)度與團(tuán)隊(duì)協(xié)作的實(shí)用手冊(cè)》
- 2使用ThinkPHP框架構(gòu)建高效學(xué)生管理系統(tǒng)的獨(dú)特優(yōu)勢(shì)與實(shí)際應(yīng)用價(jià)值
- 3試用PHP軟件項(xiàng)目管理工具:優(yōu)化項(xiàng)目流程,提高團(tuán)隊(duì)協(xié)作效率的絕佳選擇
- 4php生產(chǎn)制造物料管理系統(tǒng)源碼含詳細(xì)注釋與高效功能示例
- 5php采購(gòu)倉(cāng)庫(kù)管理系統(tǒng)助力企業(yè)高效庫(kù)存管控與采購(gòu)流程優(yōu)化
- 6PHP打造超實(shí)用商品庫(kù)存管理系統(tǒng),高效管控庫(kù)存不是夢(mèng)!
- 7php庫(kù)存管理系統(tǒng)論文:實(shí)現(xiàn)高效庫(kù)存管控的技術(shù)方案剖析
- 8php庫(kù)存管理系統(tǒng)源碼含詳細(xì)注釋與功能擴(kuò)展教程
- 9php庫(kù)存管理系統(tǒng)教程:從搭建到高效應(yīng)用全

