Pertanyaan Berasaskan Set: Pendekatan Unggul untuk Kursor
Pertanyaan pangkalan data memberikan pembangun pilihan untuk menggunakan kursor atau pertanyaan berasaskan set untuk mendapatkan dan memanipulasi data. Walaupun kursor melibatkan lelaran ke atas baris satu demi satu, pertanyaan berasaskan set melaksanakan operasi pada keseluruhan jadual atau subset dalam satu pernyataan.
Faedah Pertanyaan Berasaskan Set
Kelebihan asas pertanyaan berasaskan set terletak pada kebolehsamaan yang wujud. Enjin pangkalan data mampu mengoptimumkan operasi berasaskan set dengan mengedarkannya merentas berbilang rangkaian. Penyejajaran ini membolehkan pemprosesan set data besar-besaran yang cekap dalam sebahagian kecil daripada masa yang diperlukan oleh operasi berasaskan kursor.
Sebaliknya, kursor memproses data secara berurutan dan sememangnya berbenang tunggal. Akibatnya, ia jauh lebih perlahan untuk volum data yang besar.
Contoh
Pertimbangkan tugas berikut:
Dapatkan semula semua pelanggan dengan pesanan yang dibuat 30 hari yang lalu.
Berasaskan Kursor Penyelesaian:
DECLARE my_cursor CURSOR FOR SELECT * FROM Customers WHERE order_date >= DATEADD(day, -30, CURRENT_DATE); OPEN my_cursor; FETCH NEXT FROM my_cursor INTO @customer; WHILE (@@FETCH_STATUS = 0) BEGIN -- Process customer data FETCH NEXT FROM my_cursor INTO @customer; END; CLOSE my_cursor; DEALLOCATE my_cursor;
Setara Berasaskan Set:
SELECT * FROM Customers WHERE order_date >= DATEADD(day, -30, CURRENT_DATE);
Pertanyaan berasaskan set memanfaatkan kebolehsamaan enjin pangkalan data untuk memproses semua kelayakan pelanggan serentak, menghasilkan prestasi yang lebih baik dengan ketara berbanding pendekatan berasaskan kursor.
Atas ialah kandungan terperinci Kursor lwn. Pertanyaan Berasaskan Set: Bilakah Anda Harus Memilih Operasi Berasaskan Set untuk Pertanyaan Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!