Rumah > pangkalan data > tutorial mysql > Mengapa Menggunakan `SELECT TOP 100 PERCENT` dalam Pelayan SQL: Sintaks Jahat atau Tidak Berguna yang Perlu?

Mengapa Menggunakan `SELECT TOP 100 PERCENT` dalam Pelayan SQL: Sintaks Jahat atau Tidak Berguna yang Perlu?

Patricia Arquette
Lepaskan: 2025-01-01 13:04:11
asal
996 orang telah melayarinya

Why Use `SELECT TOP 100 PERCENT` in SQL Server:  A Necessary Evil or Useless Syntax?

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
Salin selepas log masuk

Contoh Tidak Sah:

SELECT foo
FROM
    (SELECT foo From MyTable WHERE ISNUMERIC (foo) = 1) bar
WHERE
    CAST(foo AS int) > 100
Salin selepas log masuk

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
Salin selepas log masuk

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...
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan