2012-05-08 62 views
1

我在MySQL中有一個很大的數據集,我想在讀取數據時加快select語句的速度。假設有1000條記錄,我想發出一條select語句,例如根據時間戳檢索其中的一半。MySQL:選擇語句並選擇性檢索數據

使用這樣的事情將無法正常工作,而ID不緊密時間戳

select * from table where table.id mod 5 = 0; 

檢索所有數據,並隨後選擇所需要的數據加上是不是一個解決方案,同時我想避免檢索大數據集。因此,我正在尋找能夠區分選定記錄的東西。

日Thnx

+1

你需要對在WHERE子句中使用 –

回答

0

如果你需要的速度,然後嘗試這個

select * from table ORDER BY table.id DESC LIMIT 0,500; 

select * from table ORDER BY table.id DESC LIMIT 500,500; 

等等...

+0

LIMIT子句中的字段添加索引在獲取所有數據(500條記錄)時不會加快處理速度。計劃是建立一個機制,選擇這些樣本中的20%,以便快速查看,如果需要,那麼用戶將能夠獲得整個500條記錄(詳細視圖)。 – Fotakis

+2

我舉了一個極限的例子,因爲你說你有很大的數據集。您可以使用PHP(或您正在使用的任何其他編程語言)動態地設置限制。 第一次啓動 select count(id)as id_count from 然後保持id_count爲可變。要獲取20%的記錄,您可以執行 $ id_count = $ id_count * 0.2;然後創建查詢 select * from table ORDER BY table.id DESC LIMIT 0,500; 500應該由$ id_count值替換。 進一步如果你想限制總行數最大(比如說)100,那麼你可以在準備查詢之前編寫下面的代碼 $ id_count = min($ id_count,100); – Imdad