sql >> Databáze >  >> RDS >> Mysql

Pomalý dotaz Mysql:INNER JOIN + ORDER BY způsobí řazení souborů

Budete muset trochu denormalizovat a zkopírovat pole posts.created_at do tabulky post_tags (nazval jsem to post_created_at, můžete si to pojmenovat, jak chcete):

CREATE TABLE `posts_tags` (
  `id` int(11) NOT NULL auto_increment,
  `post_id` int(11) default NULL,
  `tag_id` int(11) default NULL,
  `post_created_at` datetime default NULL,
  `created_at` datetime default NULL,
  `updated_at` datetime default NULL,
  PRIMARY KEY  (`id`),
  KEY `index_posts_tags_on_post_id_and_tag_id` (`post_id`,`tag_id`)
) ENGINE=InnoDB;

a poté přidejte index k posts_tags na

(tag_id, post_created_at)

To umožní dotazu získat všechny příspěvky pro značku ve správném pořadí, bez řazení souborů.



  1. Nejrychlejší způsob vložení objektu, pokud neexistuje s SQLAlchemy

  2. Importujte velký soubor MySQL .sql na Windows pomocí Force

  3. Looping Over Result Sets v MySQL

  4. Jak najít chybějící řádky (data) v tabulce mysql?