Mengira pengumpulan dalam pertanyaan SQL adalah permintaan yang sama.
Perayaan menyediakan kaedah yang mudah untuk melakukan pengiraan tersebut di Oracle dan ANSI-SQL. Walau bagaimanapun, SQL Server tidak mempunyai fleksibiliti mengendalikan beberapa kes penggunaan pada pelaksanaan klausa . OVER
OVER
kemahiran kemas kini
Walaupun kekurangan, teknik yang berkesan yang dikira dalam SQL Server untuk mengira pengumpulan pengumpulan adalah menggunakan set pempolimeran. Kaedah ini merangkumi:
Buat jadual sementara dengan lajur yang sama dengan jadual asal.
Masukkan data dalam jadual asal ke dalam jadual sementara, dan tetapkan lajur total terkumpul ke NULL.
- Jadual sementara dikira berdasarkan nilai sebelumnya.
-
Teknik ini sangat berkesan, tetapi ada masalah yang berpotensi: -
Perintah baris pemprosesan pernyataan mungkin tidak selalu sama dengan tarikh tarikh.
Kemas kini kemahiran bergantung pada butiran pelaksanaan yang tidak disengajakan oleh SQL Server.
-
UPDATE
perbandingan ujian penanda aras
Ujian penanda aras menunjukkan bahawa di bawah kekangan SQL Server, kaedah kursor adalah untuk mengira kaedah terpantas dan paling selamat untuk mengumpul pengumpulan. Kemahiran kemas kini memberikan prestasi tertinggi, tetapi terdapat isu -isu yang berpotensi mengenai urutan pemprosesan. Oleh itu, untuk kod pengeluaran, disyorkan untuk menggunakan kaedah berasaskan label. -
kod sampel dan data ujian penanda aras
Kod berikut menyediakan contoh kerja dan data ujian untuk ujian penanda aras:
Tetapan Data Ujian:
Kaedah ujian:
Ujian 1: Pertanyaan Kanak -kanak Berkaitan
<code class="language-sql">CREATE TABLE #t (
ord INT PRIMARY KEY,
total INT,
running_total INT
);
SET NOCOUNT ON;
DECLARE @i INT;
SET @i = 0;
BEGIN TRAN;
WHILE @i < 10000
BEGIN
INSERT INTO #t (ord, total) VALUES (@i, ABS(CHECKSUM(NEWID()) % 1000));
SET @i = @i + 1;
END;
COMMIT TRAN;</code>
Salin selepas log masuk
Ujian 2: Cross -Connection
Ujian 3: Kursor
<code class="language-sql">SELECT ord,
total,
(SELECT SUM(total)
FROM #t b
WHERE b.ord <= a.ord) AS RunningTotal
FROM #t a
ORDER BY a.ord;</code>
Salin selepas log masuk
ujian 4: kemahiran kemas kini
Melalui kecekapan pelaksanaan empat kaedah di atas, amalan terbaik untuk mengira pengumpulan dalam SQL Server boleh diperolehi. Harus diingat bahawa prestasi sebenar mungkin berbeza dari jumlah data dan konfigurasi pelayan. <code class="language-sql">SELECT a.ord,
a.total,
SUM(b.total) AS RunningTotal
FROM #t a
CROSS JOIN #t b
WHERE b.ord <= a.ord
GROUP BY a.ord, a.total
ORDER BY a.ord;</code>
Salin selepas log masuk
Atas ialah kandungan terperinci Apakah Cara Paling Cekap untuk Mengira Jumlah Berjalan dalam SQL Server?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!