Die Abfrage lautet:
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
Diese Abfrage dauert fast 90 Sekunden.
Wenn ich mich ändere TopicId
bis 18, dann läuft es in einer Sekunde. Woran könnte das liegen?
Antworten:
1 für die Antwort № 1Mein Freund, wenn ich Sie wäre, würde ich überlegen, einen Index für Ihre Spalten zu erstellen.
Hier einige Informationen zum Index:
- So erstellen Sie einen Index: https://www.w3schools.com/sql/sql_create_index.asp
- Unterschiede zwischen gruppiertem und nicht gruppiertem Index: https://docs.microsoft.com/en-us/sql/relational-databases/indexes/clustered-and-nonclustered-indexes-described
- Einige gute Erklärungen zu diesem Thema: SQL-Indizes und Leistungsverbesserung