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

Menggabungkan SELECT DISTINCT dengan UNION DISTINCT di MySQL - efek apa saja?

Anda perlu memeriksa rencana eksekusi. Namun, saya berharap bahwa rencana eksekusi berbeda -- atau setidaknya dalam beberapa keadaan.

Pertanyaan pertama:

SELECT DISTINCT a, b, c FROM table1
UNION DISTINCT
SELECT DISTINCT a, b, c FROM table2

dapat dengan mudah memanfaatkan indeks pada table1(a, b, c) dan table2(a, b, c) sebelum melakukan UNION terakhir . Ini akan mempercepat penyatuan akhir dengan mengurangi ukuran data. Kueri kedua tidak memiliki keunggulan ini.

Sebenarnya, cara paling efisien untuk menulis kueri ini mungkin adalah dengan memiliki dua indeks dan menggunakan:

SELECT DISTINCT a, b, c FROM table1 t1
UNION ALL
SELECT DISTINCT a, b, c
FROM table2 t2
WHERE NOT EXISTS (SELECT 1 FROM table1 t1 WHERE t2.a = t1.a and t2.b = t1.b and t2.c = t1.c)

Ini hampir identik, meskipun mungkin menangani NULL nilai di tabel kedua sedikit berbeda.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dapatkan kueri kembali dari pernyataan yang disiapkan PDO

  2. Apakah spatialite/mysql mendukung titik 3D?

  3. Permintaan MySQL - 'CAST' ' CONCAT' - Bagaimana cara mengalikan beberapa baris data dengan jumlah tertentu dan menampilkan total masing-masing dalam kolom baru di £'s?

  4. MySQL:Total GROUP BY DENGAN ROLLUP rasa ingin tahu

  5. Apa cara terbaik untuk memuat data secara berkala ke dalam tabel?