2015-02-06 82 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

相关问题