Rumah >pangkalan data >tutorial mysql >Mengapa Gunakan 'SELECT TOP 100 PERCENT' dalam Pertanyaan SQL?

Mengapa Gunakan 'SELECT TOP 100 PERCENT' dalam Pertanyaan SQL?

Barbara Streisand
Barbara Streisandasal
2025-01-04 03:30:38503semak imbas

Why Use

Mengapa Gunakan "Pilih 100 Peratus Teratas"?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn