sql >> Database >  >> RDS >> Mysql

Onjuist sleutelbestand met MySQL

Wat hier aan de hand is, is dat MySQL de ORDER BY doet door een tijdelijke tabel te bouwen vanuit de samenvoeging van de twee tabellen. De tijdelijke tabel is te groot om in het geheugen te passen, dus MySQL maakt een tijdelijk bestand aan.

Er zijn een paar dingen die ervoor zorgen dat dit niet correct werkt. Ruwe schijfruimte is er één. ulimit is een andere. Als dit wordt gehost, hebben ze mogelijk een quotum voor uw schijfgebruik (naast ulimit).

Ik zou willen voorstellen om een ​​beperkende clausule aan uw vraag toe te voegen. Momenteel laadt u het geheel van zowel de rss_posts als de rss_feeds in de tijdelijke tabel om te sorteren. Als je alleen de meest recente 10 wilt, zijn dat veel meer gegevens dan je echt nodig hebt.

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;


  1. Voorbeeld externe tabel van Oracle

  2. Waarom mislukt het maken van Foreign Key in Laravel 5.8?

  3. MySQL-installatie:FOUT:kan de native extensie voor gem niet bouwen

  4. MySQL-tabellen dumpen naar JSON met Golang