Mysql
 sql >> Database >  >> RDS >> Mysql

File chiave errato con MySQL

Quello che sta succedendo qui è che MySQL sta facendo ORDER BY costruendo una tabella temporanea dall'unione delle due tabelle. La tabella temporanea è troppo grande per adattarsi alla memoria, quindi MySQL crea un file temporaneo.

Ci sono alcune cose che impedirebbero il corretto funzionamento. Lo spazio su disco grezzo è uno. ulimit è un altro. Se questo è ospitato, potrebbero avere una quota sull'utilizzo del disco (oltre a ulimit).

Suggerirei di aggiungere una clausola limitante alla tua query. Attualmente carichi l'intero rss_posts e rss_feeds nella tabella temporanea per l'ordinamento. Se vuoi solo i 10 più recenti, sono molti più dati di quelli di cui hai veramente bisogno.

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;