2015-02-06 81 views
0

我有一個表在擁有約270.000記錄我的SQL Server數據庫,我需要讓我的SELECT儘可能地快,但我不知道該怎麼做還是怎麼啓動尋找。改進SQL Server在表中選擇與多條記錄

這是我的表Resultado

resultadoID (PK, int) 
participanteID (FK, int) 
perguntaID (FK, int) 
tipo (nvarchar(5)) 
valida (int) 

這是我SELECT查詢:

SELECT 
    participanteID, tipo, 
    COUNT(valida) as validas 
FROM 
    Resultado 
WHERE 
    valida = 1 
    AND participanteID = {ID} 
GROUP BY 
    participanteID, tipo 

這個數據庫是一個在線的考驗,而這個表記錄每一個參與者作進一步諮詢的所有問題的答案。

我的問題是在測試結束時,我必須執行這個諮詢給他他的答案,但我在這最後一部分遇到了一些問題,我不能指定他,我猜測問題是我的桌子大小。

在我的測試中我請教未服用超過1秒,但我不能在所有情況下測量它(例如連接速度慢或超時)

+1

您可以在列participanteID和valida添加索引。 – 2015-02-06 12:47:19

+1

通過這個http://java.dzone.com/articles/6-simple-performance-tips-sql – 2015-02-06 12:49:22

+0

@tvelykyy我已經有索引,謝謝 – Terkhos 2015-02-06 12:55:51

回答

2

這是您的查詢:

SELECT participanteID, tipo, COUNT(valida) as validas 
FROM Resultado 
WHERE valida = 1 AND participanteID = {ID} 
GROUP BY participanteID, tipo 

此查詢的最好指標是resultado(valida, participanteId, tipo)

create index resultado_valida_partipanteId_tipo on resultado(valida, participanteId, tipo); 
+0

我已經在索引' participaanteID'和'perguntaID',我應該刪除它們嗎? – Terkhos 2015-02-06 12:55:02

+1

@Terkhos。 。 。一個綜合指數是最佳的。您可以在一個表上有多個索引,數據庫引擎將爲查詢選擇正確的索引。 – 2015-02-06 13:02:23

+0

感謝哥們,我已經添加了它,我只是希望它能解決我的問題。 – Terkhos 2015-02-06 13:05:03

相關問題