監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價咨詢管理系統(tǒng) | 工程設(shè)計管理系統(tǒng) | 甲方項目管理系統(tǒng) | 簽約案例 | 客戶案例 | 在線試用
X 關(guān)閉
鷹潭網(wǎng)站建設(shè)公司

當前位置:工程項目OA系統(tǒng) > 泛普各地 > 江西OA系統(tǒng) > 鷹潭OA > 鷹潭網(wǎng)站建設(shè)公司

PHP/MYSQL 查詢大數(shù)據(jù)/遍歷表

申請免費試用、咨詢電話:400-8352-114

鷹潭網(wǎng)站建設(shè)www.diyphp.net

PHP:PHP 5.3.6 (cli) (built: Jun 15 2011 16:29:50)

  MYSQL:5.1.51

  假如我們有的一張表有幾百萬或幾萬萬的記載,我們要運用 PHP 將一切的記載都獲取過來(遍歷數(shù)據(jù)表)進行處置。查詢語句:

<span style="COLOR: rgb(0,128,0)">  SELECT * FROM largetable;

  PS:為了證實上面的做法是最佳的方法,我測驗運用 largetable 中的一個字段做 where ,以及 LIMIT,OFFSET 。上面那種 WHERE 取得后果很慢,固然用了索引。后面這種 LIMIT 可以讓你有一種想死的覺得(有興致可以調(diào)查下,《分頁優(yōu)化》)。

  以 MYSQL 以及PDO_MYSQL 為例,測驗直接運用以下代碼,必定會呈現(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)">  ...

  緣由在于在查詢執(zhí)行后,PHP 的MYSQL、PDO_MYSQL 將查詢后果悉數(shù)緩存到了客戶端,也就是 PHP 執(zhí)行地點機械上。如許假如我們要 SELECT * FROM LARGETABLE 查詢的記載在 百萬以上的時分 ,緩存的后果就會十分大,超出 PHP 運用內(nèi)存。所認為了防止如許狀況就需求封閉客戶端的緩存。

  這里供應(yīng)二個測試劇本,辨別為 MYSQL、PDO_MYSQL 封閉緩存后查詢樣例。點擊下載:mysql_query

  以下是 PDO_MYSQL 在查詢 ~100W 以及 ~200W (540M)數(shù)據(jù)后果(由于我的 PHP 內(nèi)存運用設(shè)置了1G所以沒掛:) )

  可以很分明的看出在緩存后果后占用內(nèi)存驚人…,當我們處置萬萬數(shù)據(jù)的時分必掛。

  以下是 PDO_MYSQL 封閉緩存查詢 ~200W 的數(shù)據(jù)后果。這下處置萬萬以及E級的數(shù)據(jù)的時分,對內(nèi)存透露表現(xiàn)很淡定。

  PS:假如你要處置的數(shù)據(jù)就幾十萬,你照樣調(diào)大點內(nèi)存好了。比方 MYSQL:

  mysql_unbuffered_query() 的益處是有價值的:在 mysql_unbuffered_query() 返回的后果集之上不克不及運用 mysql_num_rows() 和 mysql_data_seek()。此外在向 MySQL 發(fā)送一條新的 SQL 查詢之前,必需提取失落一切未緩存的 SQL 查詢所發(fā)生的后果行。

發(fā)布:2007-03-31 14:58    編輯:泛普軟件 · xiaona    [打印此頁]    [關(guān)閉]
相關(guān)文章:
鷹潭OA
聯(lián)系方式

成都公司:成都市成華區(qū)建設(shè)南路160號1層9號

重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓

咨詢:400-8352-114

加微信,免費獲取試用系統(tǒng)

QQ在線咨詢

泛普鷹潭網(wǎng)站建設(shè)公司其他應(yīng)用

鷹潭軟件開發(fā)公司 鷹潭門禁系統(tǒng) 鷹潭物業(yè)管理軟件 鷹潭倉庫管理軟件 鷹潭餐飲管理軟件 鷹潭網(wǎng)站建設(shè)公司