Andreas Korthaus: temporäre Tabellen

Beitrag lesen

Hallo!
Nochmal. Hab das ganze jetzt mal so umgesetztm ist verdammt schnell(wenn die Suche im Cache ist), sogar schneller als eine einfache Suche vorher!
Das Sortieren und Abfragen der temporären Tabelle kostet in der Tat nicht mal 1/1000 Sekunde.
1 Problem habe ich, wie mache ich das am sinnvollste die Tabelle wieder zu löschen? Exra ein DROP TABLE? Ein mysql_close() bewirkt da nichts, da ich mir mit mysql_peconect() also persistent verbinde. Wenn ich das weglasse, also nur mysql_conect(), dann wird die Tabelle automatisch gelöscht, aber dann muß ich jedesmal eine neue Verbindung aufbauen. Was ist wohl der besere Weg?

Dann ist da noch das Problem mit dem Ranking. Ich habe die Suche erstmal auf 100 Resultate beschränkt, erhalte dann aber wirklich nur Mist. Ich habe jetzt die Abfrage mal auf 1000 erhöht, das klappt auch prima, nach einigen Versuchen, die ersten Versuche sind erheblich langsamer als bei 100, also 20 Sekunden und mehr, am Ende kommt es trotzdem wieder auf 0,2 Sekunden beim 4. Versuch runter.  Also im Prinzp kein Problem, nur mülle ich mir natürlch mit sowas unnötig schnell den Cache voll, oder? Nur was soll ich machen? In der Suche kann ich nicht sortieren nach Datum, das kostet sooo unglaublich viel Zeit, versteh gar nicht wieso.

Das Problem ist außerdem, wenn das automatische Ranking mal ausgeschaltet wäre, dann würde mysql vermutlich nach der ID gehen, und da kommt normalerweise die kleinste zuerst, also der älteste Beitrag zuerst, also würden alle aktuelleren Beiträge automatisch bei Überschreitung von LIMIT hinten rausfallen.

Mal meine Abfragen:

CREATE TEMPORARY TABLE temp_tabelle TYPE=HEAP
SELECT id,topic,title,name,time
FROM selfarchiv
WHERE
MATCH (topic,title,name,body) AGAINST ('Datenbank') AND
MATCH (topic,title,name,body) AGAINST ('MySQL')
LIMIT 0, 100;

SELECT * FROM temp_tabelle ORDER BY time

Viele Grüße
Andreas