Rumah >pangkalan data >tutorial mysql >Mengapa Gunakan 'SELECT TOP 100 PERCENT' dalam Pertanyaan SQL?
Sebelum SQL Server 2005, pembangun menggunakan helah "Pilih 100 Peratus Teratas" untuk membolehkan penggunaan pesanan mengikut klausa dalam definisi pandangan. Walau bagaimanapun, di luar tujuan ini, beberapa kod yang diwarisi hari ini masih termasuk "Pilih 100 Peratus Teratas" dalam pernyataan SQL dinamik yang digunakan dalam ADO dalam aplikasi ASP.NET.
Soalan: Adakah terdapat sebab untuk menggunakan " 100 Peratus Teratas" dalam senario ini?
Jawapannya: Pertengahan Materialisasi
Menurut pakar seperti Adam Machanic, "Pilih 100 Peratus Teratas" digunakan untuk "pewujudan pertengahan." Inilah sebabnya:
Dalam SQL Server, pertanyaan boleh dinilai dalam susunan yang berbeza bergantung pada keadaan. Sebagai contoh, dua pertanyaan berikut mungkin menghasilkan hasil yang berbeza disebabkan oleh kekaburan dalam susunan penilaian:
SELECT foo From MyTable WHERE ISNUMERIC (foo) = 1 AND CAST(foo AS int) > 100 SELECT foo FROM (SELECT foo From MyTable WHERE ISNUMERIC (foo) = 1) bar WHERE CAST(foo AS int) > 100
Walau bagaimanapun, sebelum SQL Server 2005, melampirkan pertanyaan dalaman dalam "Pilih 100 Peratus Teratas" memaksa pertanyaan dalaman terkumpul, menghasilkan penilaian yang konsisten pesanan:
SELECT foo FROM (SELECT TOP 100 PERCENT foo From MyTable WHERE ISNUMERIC (foo) = 1 ORDER BY foo) bar WHERE CAST(foo AS int) > 100
Nota Awas
Walaupun teknik ini boleh diterima pada masa lalu, secara amnya dinasihatkan untuk mengelak daripada menggunakan "Pilih 100 Peratus Teratas" dalam SQL dinamik . Hasilnya mungkin tidak konsisten disebabkan oleh perubahan dalam tahap tampung, skema, indeks atau kiraan baris.
Atas ialah kandungan terperinci Mengapa Gunakan 'SELECT TOP 100 PERCENT' dalam Pertanyaan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!