/ / SQL-Abfrage dauert sehr lange mit einem bestimmten Wert und nicht mit anderen - SQL, Join

SQL Query benötigt eine sehr lange Zeit mit einem bestimmten Wert und nicht mit anderen - sql join

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 № 1

Mein Freund, wenn ich Sie wäre, würde ich überlegen, einen Index für Ihre Spalten zu erstellen.

Hier einige Informationen zum Index:

  1. So erstellen Sie einen Index: https://www.w3schools.com/sql/sql_create_index.asp
  2. Unterschiede zwischen gruppiertem und nicht gruppiertem Index: https://docs.microsoft.com/en-us/sql/relational-databases/indexes/clustered-and-nonclustered-indexes-described
  3. Einige gute Erklärungen zu diesem Thema: SQL-Indizes und Leistungsverbesserung