Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengeluarkan Baris Pendua dengan Cekap dari Jadual SQL Besar?
Mengalih Keluar Baris Pendua daripada Jadual SQL Besar dengan Cekap
Menambah kekangan unik pada jadual besar (berjuta-juta baris) memerlukan pengendalian entri pendua dengan berhati-hati. Memadamkan pendua secara langsung dengan pertanyaan SQL standard boleh menjadi sangat perlahan dan intensif sumber.
Satu kaedah mudah melibatkan sandaran jadual, menambah kekangan unik, dan kemudian memulihkan jadual daripada sandaran. Ini memastikan hanya baris unik dikekalkan.
Walau bagaimanapun, pendekatan yang lebih halus mengoptimumkan proses pemadaman menggunakan pertanyaan SQL ringkas:
<code class="language-sql">DELETE FROM table USING table AS alias WHERE table.field1 = alias.field1 AND table.field2 = alias.field2 AND table.max_field < alias.max_field;</code>
Pertanyaan ini dengan cekap mengalih keluar pendua dengan membandingkan baris berdasarkan field1
dan field2
. Ia mengekalkan baris dengan nilai max_field
tertinggi, dengan berkesan menghapuskan pendua bernilai lebih rendah. Contohnya:
<code class="language-sql">DELETE FROM user_accounts USING user_accounts AS ua2 WHERE user_accounts.email = ua2.email AND user_accounts.id < ua2.id;</code>
Contoh ini mengalih keluar alamat e-mel pendua, mengekalkan akaun dengan id
tertinggi (mungkin yang paling baru dibuat).
Nota Penting: Klausa USING
, yang meningkatkan kecekapan pertanyaan dengan ketara dengan mendayakan perbandingan baris langsung, ialah ciri khusus PostgreSQL. Kaedah alternatif mungkin diperlukan untuk sistem pangkalan data lain.
Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Baris Pendua dengan Cekap dari Jadual SQL Besar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!