Meningkatkan Pertanyaan Kiraan Berbeza pada Berbilang Lajur
Mengira nilai berbeza pada berbilang lajur ialah keperluan biasa dalam analisis data. Satu cara untuk mencapai ini adalah dengan menggunakan subkueri seperti yang ditunjukkan dalam coretan kod yang disediakan. Walau bagaimanapun, pendekatan ini berpotensi memberi kesan kepada prestasi.
Penyelesaian Alternatif: Lajur Dikira Berterusan
Untuk meningkatkan prestasi pertanyaan sedemikian, pertimbangkan untuk menggunakan lajur dikira berterusan. Lajur yang dikira berterusan mengira dan menyimpan nilai berdasarkan ungkapan yang ditentukan. Dalam kes ini, anda boleh mencipta lajur yang dikira yang menggabungkan dua lajur menggunakan fungsi cincang atau gabungan:
ALTER TABLE DocumentOutputItems ADD ComputedColumn AS HASHBYTES('MD5', DocumentId + ',' + DocumentSessionId) PERSISTED
Setelah berterusan, lajur yang dikira menjadi lajur terindeks, deterministik yang boleh digunakan untuk pertanyaan pantas . Dengan mengira nilai berbeza lajur yang dikira ini, anda boleh mencapai hasil yang sama seperti pendekatan subkueri:
SELECT COUNT(DISTINCT ComputedColumn) FROM DocumentOutputItems
Faedah:
Nota: Keberkesanan pendekatan ini bergantung pada pengedaran data dan konfigurasi tetapan pangkalan data yang betul.
Atas ialah kandungan terperinci Bagaimanakah Lajur Pengiraan Berterusan Boleh Meningkatkan Prestasi untuk Pertanyaan Kiraan Berbeza Merentasi Berbilang Lajur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!