2013-04-03 67 views
0

蔭目前開發的應用這就是分析保存在我們的數據庫中運行值(平均像日,月,使用方法等過濾器/位)。不過,我也讀過用戶友好的應用程序在用戶點擊按鈕後不會花費太長時間來顯示數據,但我不能想出一種方法來快速查詢大型數據庫。我想過寫的東西,這樣他們不需要每個用戶改掉來獲取信息的時間重新計算,但它只是似乎是途徑很多信息,很多的過濾器存儲和我存儲所需的值每一天只是不能想出另一種方式..上優化MySQL選擇的應用

這是我的SQL查詢看起來像:

SELECT 
p.processID, p.runtime, p.servername 
FROM 
public.process p 
WHERE 
(p.starttime BETWEEN 1356994800000 AND 1359414000000) AND 
p.MainMethodID = '12'; 

編輯: MainMethodID是BIGINT,我已經使用指數「開始時間」和「MainMethodID」。我的問題是,如果有一個方法可以得到結果GUI應用程序速度更快,因爲所有5秒以上似乎相當長,我想我不能只是之前計算,因爲之前像解釋(使用方法和時間安排)的許多過濾選項everytihing 。

EXPLAIN給出了以下結果:

1, 'SIMPLE', 'p', 'ref', 'MainMethodID,startTime', 'MainMethodID', '8', 'const', 28128, 'Using index condition; Using where' 
+0

一個綜合指數和你的問題是......? –

+1

請用你的查詢的'EXPLAIN'來更新你的問題。 – Kermit

+0

這對於你來說花了太長時間(r品味;))的原因可能是索引問題。確保你有「開始時間」和「MainMethodID」的指數,所以你的where子句可以從中獲利。如果這沒有幫助,可能爲MainMethodID而不是VARCHAR提供實數類型,我認爲這也可以加快速度。 – DrCopyPaste

回答

1

創建於(MainMethodId, startTime)

+0

感謝您的回答,我只是嘗試這樣做的好處,但它似乎沒有提高速度。也許sql查詢不能得到任何快速,因爲它需要超過~28000行? – BadKarma