Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Truy vấn chậm Mysql:INNER JOIN + ORDER BY gây ra sắp xếp tệp

Bạn sẽ cần phải chuẩn hóa một chút và sao chép trường posts.create_at vào bảng post_tags (tôi gọi nó là post_create_at, bạn có thể đặt tên nó theo cách bạn muốn):

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;

và sau đó thêm chỉ mục vào posts_tags trên

(tag_id, post_created_at)

Điều đó sẽ cho phép truy vấn nhận được tất cả các bài đăng cho một thẻ, theo đúng thứ tự mà không cần sắp xếp tệp.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để lập lịch truy vấn MySQL?

  2. Nhiều truy vấn nhỏ so với một truy vấn dài. Cái nào hiệu quả hơn?

  3. Cách nhận NGÀY TỐI ĐA thứ hai trong MYSQL

  4. Truy vấn MySQL trả về các hàng trùng lặp

  5. Mysql Làm cách nào để bạn tạo một chỉ mục được phân cụm?