2015-02-06 5 views
0

У меня есть таблица в моей базе данных SQL Server, которая содержит около 270 000 записей, и мне нужно сделать мой SELECT как можно быстрее, но я не знаю, как это сделать или что начать находясь в поиске.Улучшите SQL Server SELECT в таблице со многими записями

Это мой стол 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 и Валида. –

+1

пройдите через это http://java.dzone.com/articles/6-simple-performance-tips-sql –

+0

@tvelykyy У меня уже есть индекс, спасибо – Terkhos

ответ

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

У меня уже есть указатель на ' участия и 'perguntaID', должен ли я удалить их? – Terkhos

+1

@ Terkhos. , , Один составной индекс является оптимальным. Вы можете иметь несколько индексов в таблице, и механизм базы данных выберет правильную (-ы) для запроса. –

+0

Спасибо, приятель, я уже добавил, я просто надеюсь, что это решит мою проблему. – Terkhos

Смежные вопросы