Memilih Baris dalam SQL Server
Pertanyaan yang diberikan gagal mengembalikan lebih daripada 7374 baris kerana ia menghabiskan bilangan baris dalam sys. jadual lajur. Untuk mengatasi had ini, pendekatan yang lebih cekap ialah menggunakan CTE berlatarkan untuk menjana "Jadual Tally" atau "Jadual Nombor".
Berikut ialah pertanyaan yang dioptimumkan menggunakan CTE lata:
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
Pendekatan ini sangat cekap kerana ia menghasilkan sifar bacaan dan skala kepada bilangan baris yang sangat besar. Untuk perbandingan prestasi dan maklumat lanjut tentang Tally Tables, rujuk sumber terpaut yang disediakan dalam respons.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memilih Sebilangan Besar Baris dalam Pelayan SQL dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!