sql >> Databasteknik >  >> RDS >> Mysql

Felaktig nyckelfil med MySQL

Vad som händer här är att MySQL gör ORDER BY genom att bygga en temporär tabell från sammanfogningen av de två tabellerna. Den tillfälliga tabellen är för stor för att passa in i minnet så MySQL skapar en temporär fil.

Det finns några saker som skulle hindra detta från att fungera korrekt. Rå diskutrymme är ett. ulimit är en annan. Om detta är värd kan de ha en kvot på din diskanvändning (utöver ulimit).

Jag skulle föreslå att du lägger till en begränsningsklausul i din fråga. För närvarande laddar du in hela både rss_posts och rss_feeds i den temporära tabellen för sortering. Om du bara vill ha de senaste 10 så är det mycket mer data än du verkligen behöver.

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. Hur anpassar man konfigurationsfilen för den officiella PostgreSQL Docker-bilden?

  2. Hur fungerar PostgreSQL security_barrier views?

  3. Hur man infogar poster från tabell till en annan utan dubbletter

  4. Spelar VARCHAR-storleksgränsen någon roll?