Rumah > pangkalan data > tutorial mysql > Apakah Cara Paling Cekap untuk Mengira Jumlah Berjalan dalam SQL Server?

Apakah Cara Paling Cekap untuk Mengira Jumlah Berjalan dalam SQL Server?

Susan Sarandon
Lepaskan: 2025-01-25 03:32:08
asal
865 orang telah melayarinya

What's the Most Efficient Way to Calculate Running Totals in SQL Server?

SQL Server mengumpulkan jumlah keseluruhan kaedah pengiraan secara terperinci

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.
  1. Jadual sementara dikira berdasarkan nilai sebelumnya.
  2. 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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan