Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Falsche Schlüsseldatei mit MySQL

Was hier vor sich geht, ist, dass MySQL das ORDER BY durchführt, indem es eine temporäre Tabelle aus dem Join der beiden Tabellen erstellt. Die temporäre Tabelle ist zu groß, um in den Arbeitsspeicher zu passen, sodass MySQL eine temporäre Datei erstellt.

Es gibt ein paar Dinge, die verhindern würden, dass dies richtig funktioniert. Roher Speicherplatz ist eins. ulimit ist eine andere. Wenn dies gehostet wird, haben sie möglicherweise ein Kontingent für Ihre Festplattennutzung (zusätzlich zu ulimit).

Ich würde vorschlagen, Ihrer Anfrage eine einschränkende Klausel hinzuzufügen. Derzeit laden Sie die gesamten rss_posts und rss_feeds zum Sortieren in die temporäre Tabelle. Wenn Sie nur die letzten 10 möchten, sind das viel mehr Daten, als Sie wirklich brauchen.

SELECT posts.id, posts.post_title 
FROM rss_posts AS posts INNER JOIN rss_feeds AS feeds ON posts.blog_id=feeds.id 
WHERE feeds.blog_language=1 
AND posts.post_data_db > (now - interval 30 day);
ORDER BY posts.post_date_db DESC LIMIT 10;