Comment faire pour exécuter MS SQL Server Query plus rapidement?

J'ai ce genre de requête dans mon ms sql.

SELECT OdeaMainDataBase.dbo.ItemChoicesTable.*, CASE WHEN EXISTS(SELECT * FROM StudentTestTablefromRemark WHERE StudID = @studId AND ExamID = @examId AND ItemBankID = @itemBankId AND ChoiceID = OdeaMainDataBase.dbo.ItemChoicesTable.ChoiceID) THEN 'True' ELSE 'False' END AS isAnswered FROM OdeaMainDataBase.dbo.ItemChoicesTable WHERE ItemBankID = @itemBankId 

J'observe que l'instruction CASE j'ai faite provoque l'exécution lente de ma requête. Quand je supprime ce CASE , il s'exécute rapidement mais j'ai besoin de ce cas pour ma sortie.

Voici la structure que je veux afficher

Tableau de choix des articles

 ItemBankID ChoiceID ChoiceLetter -------------------------------------- 1 1 A 1 2 B 1 3 C 2 4 A 2 5 B 2 6 C 

Tableau des réponses des élèves

 ItemBankID ChoiceID ChoiceLetter StudentId ------------------------------------------------- 1 2 B 123 2 6 C 123 

Sortie désirée

 ItemBankID ChoiceID ChoiceLetter IsAnswered ---------------------------------------------------- 1 1 A False 1 2 B True 1 3 C False 2 4 A False 2 5 B False 2 6 C True 

Je veux atteindre cette sortie sans ralentir mon programme.

Toute idée me fera.

Merci beaucoup

Essaye ça

 SELECT i.*, CASE WHEN s.ChoiceID IS NULL THEN 'False' ELSE 'True' END FROM OdeaMainDataBase.dbo.ItemChoicesTable i LEFT OUTER JOIN StudentTestTablefromRemark s ON s.ChoiceID = i.ChoiceID AND s.ItemBankID = i.ItemBankID AND s.StudID = @studId AND s.ExamID = @examId WHERE i.ItemBankID = @itemBankId 

Essayez cette requête

 SELECT OdeaMainDataBase.dbo.ItemChoicesTable.*, ISNULL(a,'False') as isAnswered FROM OdeaMainDataBase.dbo.ItemChoicesTable left outer join(Select 'True' as a,ChoiceID FROM StudentTestTablefromRemark Where StudID=@studId AND ExamID=@examId AND ItemBankID=@itemBankId )b on b.ChoiceID=OdeaMainDataBase.dbo.ItemChoicesTable.ChoiceID Where ItemBankID = @itemBankId