2017-06-15 23 views
0

特定の値で本当に長い時間がかかり、ないクエリは次のとおりです。SQLクエリは、他の人

SELECT COUNT(q."TopicId") as TotalQuestions 
FROM "Questions" q 
JOIN "QuestionScores" qs 
    ON qs."QuestionId"=q."id" 
WHERE qs."version" = (SELECT "version" 
         FROM "QuestionScores" 
         ORDER BY "version" DESC 
         LIMIT 1) 
    AND qs."StudentId"= 105 
    AND q."status"='active' 
    AND q."TopicId" = 125 
    AND q."PassageId" IS NULL 

このクエリは、約90秒かかります。

TopicIdを18に変更すると、1秒後に実行されます。何が問題なの?

+1

書かれているように、私はこのクエリが役に立たないとは思わない。 –

+0

カウントを返す必要があります – Shamoon

+0

サブクエリの目的は何ですか? –

答えて

1

もし私があなただったら私はあなたの列のインデックスを作成することを考えました。ここで

はインデックスに関する情報は以下のとおりです。

  1. インデックスを作成する方法:https://docs.microsoft.com/en-us/sql/relational-databases/indexes/clustered-and-nonclustered-indexes-described
  2. この問題について、それについていくつかの良い説明:SQL Indexes and performance improvement
  3. クラスタ化と非クラスタ化インデックスの間 https://www.w3schools.com/sql/sql_create_index.asp
  4. 違い
関連する問題