Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memilih Bilangan Baris Tertentu dalam Pelayan SQL dengan Cekap?

Bagaimana untuk Memilih Bilangan Baris Tertentu dalam Pelayan SQL dengan Cekap?

Susan Sarandon
Susan Sarandonasal
2024-12-29 18:46:11445semak imbas

How to Efficiently Select a Specific Number of Rows in SQL Server?

Memilih N Baris dalam Pelayan SQL

Pertanyaan 1:

DECLARE @Range AS INT = 10

;WITH CTE AS(
    SELECT TOP (@Range) Duration = ROW_NUMBER() OVER(ORDER BY OBJECT_ID)
    FROM sys.all_columns
    ORDER BY [Object_id]
)
SELECT Duration from CTE

Penjelasan:

Pertanyaan ini dihadkan oleh bilangan baris dalam jadual sys.all_columns. Oleh itu, menetapkan @Julat kepada 10,000 hanya akan mengembalikan 7,374 baris kerana itu ialah bilangan baris dalam sys.all_columns.

Pertanyaan 2:

DECLARE @start INT = 1;
DECLARE @end INT = 10;

WITH numbers AS (
    SELECT @start AS number
    UNION ALL
    SELECT number + 1 
    FROM  numbers
    WHERE number < @end
)
SELECT *
FROM numbers
OPTION (MAXRECURSION 0);

Penjelasan:

Pertanyaan alternatif ini menggunakan ungkapan jadual biasa rekursif (CTE) untuk menjana jadual nombor dari @mula hingga @akhir. PILIHAN (MAXRECURSION 0) adalah perlu untuk mengelakkan ralat pengulangan apabila membuat jadual dengan bilangan baris yang tidak terhad.

Penyelesaian CTE Bertumpuk:

Penjelasan:

Pendekatan CTE bertingkat ialah cara terpantas untuk mencipta "Tally Table" untuk bilangan baris yang banyak.

DECLARE @Range AS INT = 7374

;WITH E1(N) AS( -- 10 ^ 1 = 10 rows
    SELECT 1 FROM(VALUES (1),(1),(1),(1),(1),(1),(1),(1),(1),(1))t(N)
),
E2(N) AS(SELECT 1 FROM E1 a CROSS JOIN E1 b), -- 10 ^ 2 = 100 rows
E4(N) AS(SELECT 1 FROM E2 a CROSS JOIN E2 b), -- 10 ^ 4 = 10,000 rows
E8(N) AS(SELECT 1 FROM E4 a CROSS JOIN E4 b), -- 10 ^ 8 = 10,000,000 rows
CteTally(N) AS(
    SELECT TOP(@Range) ROW_NUMBER() OVER(ORDER BY(SELECT NULL))
    FROM E8
)
SELECT * FROM CteTally

Kelebihan Cascaded CTE:

  • Menghasilkan baris tanpa sebarang bacaan daripada jadual lain.
  • Boleh diperluaskan dengan mudah untuk membuat jadual dengan berbilion-bilion baris.
  • Berprestasi baik dalam perbandingan prestasi antara kaedah lain.

Atas ialah kandungan terperinci Bagaimana untuk Memilih Bilangan Baris Tertentu dalam Pelayan SQL dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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