Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Arquivo de chave incorreto com MySQL


O que está acontecendo aqui é que o MySQL está fazendo o ORDER BY construindo uma tabela temporária a partir da junção das duas tabelas. A tabela temporária é muito grande para caber na memória, então o MySQL cria um arquivo temporário.

Existem algumas coisas que impedem que isso funcione corretamente. O espaço em disco bruto é um deles. ulimit é outro. Se estiver hospedado, eles podem ter uma cota no uso do disco (além do ulimit).

Sugiro adicionar uma cláusula de limitação à sua consulta. Atualmente você carrega todos os rss_posts e rss_feeds na tabela temporária para classificação. Se você deseja apenas os 10 mais recentes, há muito mais dados do que você realmente precisa.
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;