Pertanyaan Apa perbedaan antara UNION dan UNION ALL?


Apa perbedaan antara UNION dan UNION ALL?


1112
2017-09-08 15:19


asal


Jawaban:


UNION menghapus rekaman duplikat (di mana semua kolom dalam hasil adalah sama), UNION ALL tidak.

Ada pukulan kinerja saat menggunakan UNION dari pada UNION ALL, karena server database harus melakukan pekerjaan tambahan untuk menghapus baris duplikat, tetapi biasanya Anda tidak ingin duplikat (terutama saat mengembangkan laporan).

Contoh UNION:

SELECT 'foo' AS bar UNION SELECT 'foo' AS bar

Hasil: 

+-----+
| bar |
+-----+
| foo |
+-----+
1 row in set (0.00 sec)

Contoh UNION ALL:

SELECT 'foo' AS bar UNION ALL SELECT 'foo' AS bar

Hasil:

+-----+
| bar |
+-----+
| foo |
| foo |
+-----+
2 rows in set (0.00 sec)

1371
2017-10-14 16:09



UNION dan UNION SEMUA menggabungkan hasil dari dua SQL yang berbeda. Mereka berbeda dalam cara mereka menangani duplikat.

  • UNION melakukan DISTINCT pada hasil yang ditetapkan, menghilangkan setiap baris duplikat.

  • UNION ALL tidak menghapus duplikat, dan karena itu lebih cepat dari UNION.

catatan: Saat menggunakan perintah ini semua kolom yang dipilih harus dari tipe data yang sama.

Contoh: Jika kita memiliki dua tabel, 1) Karyawan dan 2) Pelanggan

  1. Data tabel karyawan:

enter image description here

  1. Data tabel pelanggan:

enter image description here

  1. Contoh UNION (Ini menghapus semua rekaman duplikat):

enter image description here

  1. UNION ALL Example (Ini hanya menggabungkan catatan, bukan menghilangkan duplikat, jadi lebih cepat dari UNION):

enter image description here


234
2017-09-18 12:34



UNION menghapus duplikat, sedangkan UNION ALL tidak.

Untuk menghapus duplikat set hasil harus disortir, dan ini mungkin berdampak pada kinerja UNION, tergantung pada volume data yang disortir, dan pengaturan berbagai parameter RDBMS (Untuk Oracle PGA_AGGREGATE_TARGET dengan WORKAREA_SIZE_POLICY=AUTO atau SORT_AREA_SIZE dan SOR_AREA_RETAINED_SIZE jika WORKAREA_SIZE_POLICY=MANUAL ).

Pada dasarnya, semacam itu lebih cepat jika dapat dilakukan dalam memori, tetapi peringatan yang sama tentang volume data berlaku.

Tentu saja, jika Anda membutuhkan data yang dikembalikan tanpa duplikat maka Anda harus gunakan UNION, tergantung pada sumber data Anda.

Saya akan mengomentari posting pertama untuk memenuhi syarat komentar "jauh kurang berkinerja", tetapi tidak memiliki reputasi (poin) yang cukup untuk melakukannya.


42
2017-09-08 17:10



Di ORACLE: UNION tidak mendukung tipe kolom BLOB (atau CLOB), UNION ALL tidak.


27
2017-09-08 15:20



Perbedaan mendasar antara UNION dan UNION ALL adalah operasi serikat menghilangkan baris duplikat dari hasil yang ditetapkan tetapi serikat semua mengembalikan semua baris setelah bergabung.

dari http://zengin.wordpress.com/2007/07/31/union-vs-union-all/


18
2017-08-13 00:03



Anda dapat menghindari duplikat dan tetap berjalan lebih cepat daripada UNION DISTINCT (yang sebenarnya sama dengan UNION) dengan menjalankan kueri seperti ini:

SELECT * FROM mytable WHERE a=X UNION ALL SELECT * FROM mytable WHERE b=Y AND a!=X

Perhatikan AND a!=X bagian. Ini jauh lebih cepat daripada UNION.


12
2018-06-06 09:55



Hanya untuk menambahkan dua sen saya ke diskusi di sini: orang bisa mengerti UNION operator sebagai UNION SET-oriented yang murni - mis. set A = {2,4,6,8}, atur B = {1,2,3,4}, A UNION B = {1,2,3,4,6,8}

Ketika berhadapan dengan set, Anda tidak ingin angka 2 dan 4 muncul dua kali, sebagai elemen juga aku s atau tidak dalam satu set.

Namun, dalam dunia SQL, Anda mungkin ingin melihat semua elemen dari dua set bersama-sama dalam satu "tas" {2,4,6,8,1,2,3,4}. Dan untuk tujuan ini T-SQL menawarkan operator UNION ALL.


12
2017-08-16 16:50



PERSATUAN
Itu UNION perintah digunakan untuk memilih informasi yang terkait dari dua tabel, seperti halnya JOIN perintah. Namun, saat menggunakan UNION perintah semua kolom yang dipilih harus dari tipe data yang sama. Dengan UNION, hanya nilai berbeda yang dipilih.

UNI SEMUA
Itu UNION ALL perintah sama dengan UNION perintah, kecuali itu UNION ALL memilih semua nilai.

Perbedaan antara Union dan Union all Apakah itu Union all tidak akan menghilangkan baris duplikat, melainkan hanya menarik semua baris dari semua tabel yang sesuai dengan spesifikasi Anda dan menggabungkannya ke dalam tabel.

SEBUAH UNION Pernyataan efektif melakukan SELECT DISTINCT pada hasil yang ditetapkan. Jika Anda tahu bahwa semua catatan yang dikembalikan adalah unik dari kesatuan Anda, gunakan UNION ALL sebaliknya, ini memberikan hasil yang lebih cepat.


9
2017-09-08 15:43



Tidak yakin itu penting dari basis data

UNION dan UNION ALL harus bekerja pada semua Server SQL.

Anda harus menghindari hal yang tidak perlu UNIONs mereka kebocoran kinerja besar. Sebagai aturan praktis digunakan UNION ALL jika Anda tidak yakin mana yang akan digunakan.


6
2018-06-15 10:42