Saat ini, saya membandingkan dua set data, yang berisi StoreKey/ProductKey
kombinasi unik .
Kumpulan data pertama memiliki StoreKey/ProductKey
kombinasi unik untuk penjualan antara awal Januari 2012 dan akhir Mei 2014 (hasil = 450 ribu baris). Kumpulan data ke-2 memiliki StoreKey/ProductKey
kombinasi unik , untuk penjualan mulai Juni 2014, hingga hari ini (hasil = 190 ribu baris).
Saya mencari untuk menemukan StoreKey/ProductKey
kombinasi yang ada di set ke-2, tetapi tidak di set ke-1 - yaitu produk baru yang dijual dari awal Juni.
Sampai sekarang, saya telah membuang dua set data ke tabel temp, membuat indeks untuk kedua tabel pada kedua tombol, dan menggunakan EXCEPT
pernyataan untuk menemukan item unik.
Apa cara paling efisien untuk membandingkan set data besar seperti itu? Apakah ada cara yang lebih efisien untuk melakukan perbandingan besar seperti ini?
sumber
TransactionDateKey
adalah kolom yang digunakan untuk memfilter periode waktu. Dalam hal ini indeks berkerumun diTransactionDateKey
,StoreKey
danProductKey
sempurna.Jika Anda terbiasa dengan algoritma (kompleksitas Big-O), melakukan perbandingan ini adalah yang terbaik O (n log (n)). Algoritme yang paling efisien akan mengurutkan kedua set data, kemudian membuat run down yang digabungkan secara paralel untuk menemukan kunci yang cocok (atau tidak cocok). Sebagian besar pengoptimal RDBMS akan melakukan ini secara otomatis untuk Anda ketika Anda menggunakan
EXCEPT
atauMINUS
. Paket menjelaskan Anda akan mengonfirmasi atau mengonfirmasi. Jika Anda melihat loop bersarang, Anda melakukan O (n ^ 2), tidak efisien.sumber