Apabila berhadapan dengan tugas mengira nilai unik daripada jadual berdasarkan berbilang lajur, seperti DocumentId dan DocumentSessionId , kecenderungan semula jadi adalah untuk menggunakan pendekatan subkueri. Walau bagaimanapun, ini mungkin menimbulkan kebimbangan tentang pengoptimuman prestasi.
Satu alternatif untuk menggunakan subkueri melibatkan membuat lajur pengiraan berterusan. Ini boleh dicapai dengan mencincang atau menggabungkan lajur yang diingini, memastikan hasil deterministik yang boleh diindeks dan mempunyai statistik dibina di atasnya.
Sebagai contoh, jika lajur yang dimaksudkan ialah DocumentId dan DocumentSessionId, lajur yang dikira dinamakan HashValue boleh dibuat menggunakan fungsi hash seperti SHA1 atau MD5:
ALTER TABLE DocumentOutputItems ADD COLUMN HashValue AS SHA1(DocumentId + DocumentSessionId);
Setelah lajur yang dikira dikekalkan dan diindeks, kiraan yang berbeza pada lajur ini akan bersamaan dengan hasil yang diingini:
SELECT COUNT(DISTINCT HashValue) FROM DocumentOutputItems;
Dengan menggunakan lajur yang dikira berterusan, anda boleh memanfaatkan pengindeksan dan statistik untuk meningkatkan prestasi, menghapuskan keperluan untuk subkueri.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengira Gabungan Unik Dengan Cekap Merentas Berbilang Lajur dalam Jadual Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!