Pengenalan
Jadual nombor tambahan boleh meningkatkan kecekapan pertanyaan SQL tertentu. Jadual ini boleh bersaiz tetap atau dijana secara dinamik. Artikel ini memberi tumpuan kepada cara mencipta fungsi yang ditakrifkan pengguna optimum untuk menjana senarai nombor secara dinamik.
Mengapa CTE rekursif bukan pilihan terbaik
Kaedah CTE rekursif yang popular, walaupun "agak cekap" dalam menjana nombor, sebenarnya bukanlah pilihan terbaik untuk senarai yang besar dan kerap digunakan. Ujian prestasi menunjukkan bahawa ia mempunyai tempoh yang lebih tinggi, penggunaan CPU dan tekanan memori berbanding kaedah lain.
Kaedah terbaik: meja sambung silang tradisional
Untuk senarai nombor yang besar, pendekatan jadual sambung silang tradisional sentiasa mengatasi prestasi teknik lain. Ia boleh menjana senarai dalam satu pas dengan overhed memori yang minimum.
<code class="language-sql">SELECT TOP (1000000) ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS N INTO #Tally3 FROM Master.sys.All_Columns ac1 CROSS JOIN Master.sys.ALL_Columns ac2;</code>
Faedah Jadual Pengiraan Kekal
Walaupun membuat jadual kiraan kekal memerlukan pertimbangan, ia memberikan prestasi terbaik jika senarai itu digunakan dengan kerap. Dengan saiz jadual yang sesuai, ia boleh dicache untuk prestasi optimum tanpa menjejaskan memori.
Kesimpulan
Memilih cara yang betul untuk membuat senarai nombor bergantung pada corak penggunaan khusus anda. Untuk senarai besar dan kerap digunakan, pendekatan jadual sambung silang tradisional memberikan prestasi terbaik. Untuk senarai sekali atau jarang digunakan, adalah disyorkan untuk membuat helaian kiraan kekal.
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Fungsi Ditakrifkan Pengguna Paling Cekap untuk Menjana Senarai Nombor dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!