Menggunakan SELECT TOP 100 Percent: Insights to Unuseed Functionality
Secara tradisinya, SELECT TOP 100 PERCENT digunakan dalam definisi paparan untuk memintas sekatan menggunakan ORDER BY dalam konteks sedemikian. Walau bagaimanapun, dalam pangkalan kod tertentu, fungsi ini muncul secara pelik dalam pernyataan SQL dinamik. Adakah terdapat sebarang justifikasi untuk kemasukan ini, atau adakah ia hanya menghasilkan keputusan yang sama seperti mengecualikan 100 PERATUS TERATAS?
Anehnya, SELECT 100 PERCENT TERBATAS telah menemui aplikasi unik dalam bidang "penwujudan perantaraan." Dengan memanfaatkan binaan ini, adalah mungkin untuk cache hasil pertanyaan dan mengoptimumkan pelaksanaan berikutnya. Artikel Adam Machanic memberikan penerokaan yang mencerahkan tentang teknik ini.
Walaupun amalan menggunakan SELECT TOP 100 PERCENT dengan cara ini sememangnya tidak bermasalah, ia memerlukan kewaspadaan yang melampau dan hanya boleh digunakan apabila benar-benar perlu. Pergantungannya pada keadaan tertentu dan faktor persekitaran menjadikannya terdedah kepada perubahan halus dalam skema, struktur indeks atau kiraan baris, yang berpotensi membawa kepada tingkah laku yang tidak dijangka dan tidak dapat diramalkan.
Untuk kejelasan, pertimbangkan contoh berikut:
Tidak sah Contoh:
SELECT foo From MyTable WHERE ISNUMERIC (foo) = 1 AND CAST(foo AS int) > 100
Contoh Tidak Sah:
SELECT foo FROM (SELECT foo From MyTable WHERE ISNUMERIC (foo) = 1) bar WHERE CAST(foo AS int) > 100
Contoh Sah (SQL Server 2000 dan 2005):
SELECT foo FROM (SELECT TOP 100 PERCENT foo From MyTable WHERE ISNUMERIC (foo) = 1 ORDER BY foo) bar WHERE CAST(foo AS int) > 100
Lebih-lebih lagi, PILIH 100 PERATUS TERBAIK meluaskan jangkauannya ke SQL Server 2005, membolehkan hasil yang berpotensi tidak terhad dengan:
SELECT TOP 2000000000 ... ORDER BY...
Atas ialah kandungan terperinci Mengapa Menggunakan `SELECT TOP 100 PERCENT` dalam Pelayan SQL: Sintaks Jahat atau Tidak Berguna yang Perlu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!