mysql - php匯出十多萬條資料有沒有辦法更快?

來源:互聯網
上載者:User
關鍵字 php mysql
現在是用phpExcel匯出大概需要十分鐘多,而且記憶體報錯...
有沒有什麼辦法可以讓大量資料匯出可以更快呢?
...忘了說因為是一些資料客戶需要用到的,所以要用excel格式

回複內容:

現在是用phpExcel匯出大概需要十分鐘多,而且記憶體報錯...
有沒有什麼辦法可以讓大量資料匯出可以更快呢?
...忘了說因為是一些資料客戶需要用到的,所以要用excel格式

首先應該明確問題情境:
1.這個匯出10w資料是使用者的功能還是後台或者系統內的功能,如果是使用者使用的功能,那麼可能PHP很難處理,因為要考慮使用者體驗問題,那麼這個功能可能需要使用第三方服務或者用其他擴充來做。但是如果不是使用者使用,而是系統人員或者內部人使用。則辦法有很多種。
分步驟分析問題
1.從mysql資料庫匯出10w條資料,2,將10萬天資料匯出。
首先看下,mysql資料庫查詢10w條的時間:
我剛剛測試了一下,我的11萬資料大概導了205s。因為機器的問題所以每個人的都不一樣。但是可以明確一點,這個時間不快。如果PHP的話,一般預設連線時間是30s,就會有第一個問題,逾時的問題。這個很好解決
2.用PHP將10w條資料匯出。10w條資料就會有第二個問題,記憶體不夠的問題。處理10w條資料比較慢
建議:
1.如@悲慘的大爺的方案,將10條分次匯出,由於是SELECT,所以不會佔用MYSQL太多資源,可以多線程查詢SQL。
但這隻能解決查詢的問題,查詢倒是快了,這個可以最佳化第一個步驟的時間,但是用PHP匯出10條資料的問題還是在,因為是需要把10w條資料匯出成一個excel。針對這點可以使用csv.這會比phpexcel快不少,
2.如果資料量太多或者應用情境比較頻繁可以做一個服務。

分多個檔案匯出.
比如現在要匯出10w 條資料,那麼可以分10次匯出,一次1w 條.
可以用多進程來處理.

我猜你是查資料庫一次取了十萬條,然後匯出的。這樣非常佔用記憶體。
你可以試試分頁取十次,每次取一萬條匯出。最後把匯出的檔案合并。

用mysql內建的mysqldump不好麼

如果一定要excel 可以odbc串連到資料庫後匯出到excel,具體操作搜尋下

我匯出500000一點問題都沒的,記著釋放記憶體

直接對資料庫操作,mysql匯出資料,寫個別的傳統型程式來轉換?

CSV 沒有一點壓力

用csv格式啊,不要用phpexcel

用csv。千萬不要用phpexcel。這種東西讀取速度特別的慢。我是吃過虧的。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.