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

cara mengoptimalkan kueri ini (tabel 4 mm terlibat)

Anda harus menyingkirkan GROUP BY di sini.

MySQL kurang baik dalam mengoptimalkannya.

Tulis ulang kueri Anda seperti ini:

SELECT  *
FROM    product_table
WHERE   EXISTS
        (
        SELECT  NULL
        FROM    product_table__category_1__mm mm_1
        JOIN    category cat_1
        ON      cat_1.uid = mm_1.uid_foreign
        WHERE   mm_1.uid_local = product_table.uid
                AND mm_1.uid_foreign IN (7, 8)
        )
        AND
        …        

Buat indeks:

product_table__category_*__mm (uid_local, uid_foreign)

atau, lebih baik, nyatakan PRIMARY KEYs di product_table__category_*__mm :

ALTER TABLE product_table__category_*__mm ADD CONSTRAINT pk_pc*mm_local_foreign (uid_local, uid_foreign)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Akses Java JDBC ditolak untuk pengguna

  2. NHibernate MappingException:tidak ada persisten untuk byte[]

  3. Lewati nilai variabel dari JS ke PHP

  4. MySQL sekarang() +1 hari

  5. Pengecualian tidak tertangkap 'PDOException' dengan pesan 'SQLSTATE[HY093]:Nomor parameter tidak valid'