Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Permintaan lambat Mysql:INNER JOIN + ORDER BY menyebabkan filesort

Anda perlu melakukan denormalisasi sedikit, dan menyalin bidang posts.created_at ke dalam tabel post_tags (saya menyebutnya post_created_at, Anda dapat memberi nama sesuai keinginan Anda):

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;

lalu tambahkan indeks ke posts_tags di

(tag_id, post_created_at)

Itu akan memungkinkan kueri untuk mendapatkan semua posting untuk sebuah tag, dalam urutan yang benar, tanpa filesort.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah `definer` diperlukan saat membuat prosedur tersimpan?

  2. Cegah data duplikat dimasukkan ke database mysql

  3. java.lang.AbstractMethodError:com.mysql.jdbc.PreparedStatement.setBlob(ILjava/io/InputStream;)V

  4. Bagaimana saya bisa mendeteksi baris yang berlebihan dalam tabel?

  5. Masalah komunikasi antara dua kontainer buruh pelabuhan