Seite 1 von 1

MySql-Hilfe: Umfragen aus Themen selektieren

Verfasst: 07.10.2008 11:42
von Seether
Hallo,

folgendes möchte ich machen:
Die Themen, die eine Umfrage enthalten, bei denen der User noch nicht abgestimmt hat, sollen selektiert werden.
Ich mache dies im Moment so:


Erstmal gucken wo er schon abgestimmt hat

Code: Alles auswählen

SELECT p.topic_id
FROM phpbb3_poll_votes p
LEFT JOIN phpbb3_topics t
ON t.topic_id = p.topic_id
WHERE vote_user_id = {USER_ID}
AND t.topic_time > 1210412205
GROUP BY topic_id
LIMIT 5
Danach dann noch eine Abfrage

Code: Alles auswählen

SELECT poll_title,topic_id,forum_id
FROM phpbb3_topics
WHERE topic_id NOT IN ({IDS})
AND poll_title != ''
AND topic_time > 1210412205
LIMIT 5
Die erste Abfrage ist vernachlässigbar, aber die zweite dauert über eine halbe Sekunde. Kann man das irgendwie tunen?

S.

Verfasst: 07.10.2008 12:14
von PhilippK
Ich vermute mal, dass der Filter nach poll_title der Zeitkiller ist. Setzt auf das Feld mal testweise einen Index.

Gruß, Philipp

Verfasst: 07.10.2008 12:24
von Seether
PhilippK hat geschrieben:Ich vermute mal, dass der Filter nach poll_title der Zeitkiller ist. Setzt auf das Feld mal testweise einen Index.
Ja, auf den ersten und zweiten Blick scheint das die Sache erheblich beschleunigt zu haben.

Welche negativen Auswirkungen hat ein zusätzlicher Index denn? Speicherplatz zum einen nehme ich an. Noch welche?

Verfasst: 07.10.2008 12:27
von PhilippK
Es wird halt etwas mehr Arbeits- und Festplattenspeicher benötigt. Und das Einfügen neuer Datensätze könnte minimal länger dauern. Das sollte es dann aber auch gewesen sein.

Viele Grüße,

Philipp