Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Powolne zapytanie Mysql:INNER JOIN + ORDER BY powoduje sortowanie plików

Musiałbyś trochę zdenormalizować i skopiować pole posts.created_at do tabeli post_tags (nazwałem je post_created_at, możesz nazwać je, jak chcesz):

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 następnie dodaj indeks do posts_tags na

(tag_id, post_created_at)

Umożliwi to zapytaniu pobranie wszystkich postów dla znacznika we właściwej kolejności, bez sortowania plików.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać listę przedmieść otaczających lokalizację, a następnie powtórzyć dla innych lokalizacji za pomocą MySql?

  2. Co jest nie tak z moim SQL tutaj? #1089 – Nieprawidłowy klucz prefiksu

  3. Jak obliczyć średnią sprzedaż tygodniową w MySQL?

  4. Połącz pola z różnych rzędów pod warunkiem

  5. MYSQL wyłącz automatyczne przycinanie