Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memilih Baris dengan Cekap dalam Pelayan SQL Melampaui Had Baris 7374?
Anda mungkin menghadapi had apabila cuba mendapatkan semula baris menggunakan fungsi ROW_NUMBER daripada jadual sys.all_columns . Bermula dari 7374 baris, pertanyaan ditamatkan secara tiba-tiba. Ini kerana anda telah mencapai bilangan maksimum baris yang tersedia dalam sys.all_columns.
CTE Lata untuk Menjana Nombor Besar
Untuk mengatasi had ini, anda boleh memanfaatkan lata CTE untuk membuat "Nombor Jadual" atau "Jadual Tally." Pendekatan ini dianggap sebagai kaedah paling cekap untuk menghasilkan jadual integer berjujukan. Coretan berikut menunjukkan:
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
Penjelasan
TheCTE E1 berfungsi sebagai titik permulaan dengan sepuluh baris. CTE berikutnya (E2, E4, dan seterusnya) melakukan cantuman silang untuk mendarab bilangan baris dengan 10. Pendekatan berlatarkan ini membolehkan anda menjana sejumlah besar baris dengan cekap.
Pengelakan Ulangan Infinite
Untuk mengelakkan ralat yang berkaitan dengan pengulangan maksimum, anda boleh menentukan maksimum kedalaman rekursi 0 dalam klausa Pilihan:
OPTION (MAXRECURSION 0)
Ini mengarahkan pengoptimum pertanyaan untuk menggunakan sebarang kedalaman yang diperlukan untuk melengkapkan pelaksanaan tanpa had.
Pertimbangan Prestasi
Walaupun pendekatan rekursif adalah mudah, ia mungkin begitu lebih perlahan untuk senario tertentu. Untuk penyelesaian yang lebih optimum, pertimbangkan untuk menggunakan kaedah lain seperti berikut:
Kesimpulan
Dengan memanfaatkan teknik CTE bertingkat atau meneroka kaedah alternatif, anda boleh memilih sejumlah besar baris dalam SQL dengan cekap. Pelayan, melebihi had yang dihadapi dengan jadual sys.all_columns.
Atas ialah kandungan terperinci Bagaimana untuk Memilih Baris dengan Cekap dalam Pelayan SQL Melampaui Had Baris 7374?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!