Rumah > pangkalan data > tutorial mysql > Bagaimana dengan Cekap Memadam Semua Tetapi Baris N Teratas dalam Jadual SQL?

Bagaimana dengan Cekap Memadam Semua Tetapi Baris N Teratas dalam Jadual SQL?

Patricia Arquette
Lepaskan: 2024-12-20 04:36:09
asal
859 orang telah melayarinya

How to Efficiently Delete All But the Top N Rows in an SQL Table?

Memadam Baris dalam Jadual SQL dengan Cekap, Mengekalkan Hanya N Teratas

Pertimbangkan senario di mana anda perlu membersihkan jadual pangkalan data semua tetapi baris atas n, berdasarkan kriteria tertentu. Tugas ini boleh dicapai dalam SQL menggunakan pelbagai pendekatan, dan di sini kami meneroka penyelesaian yang berkesan:

Pilihan 1: Menggunakan Penyata PADAM dan PILIH TOP

Pendekatan ini memanfaatkan pernyataan DELETE untuk mengalih keluar baris dan pernyataan SELECT TOP untuk mengenal pasti n baris atas. Sintaksnya adalah seperti berikut:

DELETE FROM Table
WHERE ID NOT IN (SELECT TOP 10 ID FROM Table)
Salin selepas log masuk

Walau bagaimanapun, seperti yang betul Chris nyatakan, kaedah ini boleh dikenakan penalti prestasi disebabkan pelaksanaan pertanyaan SELECT TOP untuk setiap baris yang akan dipadamkan.

Pilihan Alternatif: Menggunakan Jadual Sementara untuk Pengoptimuman

Untuk mengurangkan isu prestasi, pertimbangkan pendekatan dioptimumkan berikut:

SELECT TOP 10 ID INTO #Top10
DELETE FROM Table
WHERE ID NOT IN (SELECT ID FROM #Top10)
DROP TABLE #Top10
Salin selepas log masuk

Kaedah ini melibatkan mencipta jadual sementara (#Top10) untuk menyimpan n ID teratas. Pernyataan DELETE kemudian menggunakan jadual sementara ini untuk mengalih keluar baris yang tinggal dengan cekap. Akhirnya, jadual sementara digugurkan untuk mengosongkan sumber sistem.

Pendekatan alternatif ini meningkatkan prestasi dengan ketara dengan menghapuskan keperluan untuk melaksanakan pertanyaan SELECT TOP untuk setiap pemadaman baris, menghasilkan masa pelaksanaan yang lebih cepat untuk jadual besar.

Atas ialah kandungan terperinci Bagaimana dengan Cekap Memadam Semua Tetapi Baris N Teratas dalam Jadual SQL?. 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