Mysql
 sql >> база данни >  >> RDS >> Mysql

Бавната заявка на Mysql:INNER JOIN + ORDER BY причинява сортиране на файлове

Ще трябва да денормализирате малко и да копирате полето posts.created_at в таблицата post_tags (аз го нарекох post_created_at, можете да го кръстите както искате):

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;

и след това добавете индекс към posts_tags на

(tag_id, post_created_at)

Това ще позволи на заявката да получи всички публикации за маркер, в правилния ред, без сортиране на файлове.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql ГРЕШКА 1064 (42000):Имате грешка във вашия SQL синтаксис;

  2. Как да четете sql заявка към pandas dataframe / python / django

  3. Без диалектно съпоставяне за тип JDBC:1111

  4. Как да получите датата от колона Datetime в MySQL

  5. Как да комбинирам агрегатни функции в MySQL?