2012-08-06 62 views
0

我在mysql數據庫(數百萬行)中有一個非常大的表。每一行都有一個作爲字段創建的日期。我想提取從2011年到今天的行。我使用的是看起來像這樣的查詢:mysql查詢瀏覽器內存不足

select data1, data1, data3, data4, data5, data6 
    from db.table 
where date(data3) between '2011-10-01' and '2012-08-06' 

我到瀏覽器崩潰之前,MySQL查詢瀏覽器進賬約3萬行,我也得到能說會道錯誤(gmem.c:173無法分配50080000字節。中止。)

難道是因爲我沒有足夠的內存嗎?是否有任何技巧或性能增強查詢任何人都可以建議?

+0

第一。您通常希望儘可能減少檢索的行數。首先,它不是一個缺乏記憶的問題,但缺乏對需要檢索的主要想法,所以基本上你必須考慮你想要什麼以及如何更仔細地想要它。 – 2012-08-06 15:54:18

回答

0

您正在使用的查詢瀏覽器似乎正在將整個數百萬行結果集提取到RAM中。如果由於某種原因你必須做到這一點,你將需要更多的RAM。

問題是這樣的:你用這個結果集做什麼?你把它保存到一個文件?如果是這樣,那麼使用MySQL瀏覽器功能來做到這一點。它不需要像將整個結果集下載到RAM那樣多的內存。

編輯: MySQL查詢瀏覽器正在被MySQL/Oracle淘汰。您可能應該找一些其他程序將您的行提取到CSV(Excel)文件。如果這是你喜歡的,某些工具也會創建XLS文件。

這裏是正確的問題和答案:

所有你不想通過MySQL的瀏覽器進行檢索3米記錄

How to output MySQL query results in CSV format?

+0

是的,非常好的跟進。我想將結果導出到Excel文件。您能否告訴我如何「使用MySQL瀏覽器功能」 – user1563414 2012-08-06 16:05:05