Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mendapatkan Tempahan Yang Tidak Diubah Suai dengan Cekap daripada Pangkalan Data?

Bagaimana untuk Mendapatkan Tempahan Yang Tidak Diubah Suai dengan Cekap daripada Pangkalan Data?

DDD
Lepaskan: 2025-01-23 19:56:23
asal
509 orang telah melayarinya

How to Efficiently Retrieve Unmodified Reservations from a Database?

Pertanyaan Pangkalan Data untuk Tempahan Tidak Diubahsuai

Artikel ini membincangkan pengambilan semula tempahan yang tidak diubah suai secara cekap daripada pangkalan data dengan dua jadual: reservation dan reservation_log. Klausa WHERE ringkas tidak sesuai untuk mencari tempahan yang tidak dibatalkan; pendekatan yang lebih canggih diperlukan.

Kaedah 1: Pengecualian menggunakan NOT IN

Satu kaedah menggunakan penolakan untuk mengecualikan tempahan yang dibatalkan. Kami mengenal pasti tempahan yang dibatalkan dalam reservation_log dan mengecualikan ID mereka daripada jadual reservation:

<code class="language-sql">SELECT *
FROM reservation
WHERE id NOT IN (
    SELECT reservation_id
    FROM reservation_log
    WHERE change_type = 'cancel'
);</code>
Salin selepas log masuk

Kaedah 2: Pertanyaan Dioptimumkan dengan LEFT JOIN

Untuk prestasi yang lebih baik, terutamanya dengan lajur diindeks, LEFT JOIN disyorkan:

<code class="language-sql">SELECT r.*
FROM reservation r
LEFT JOIN reservation_log l ON r.id = l.reservation_id AND l.change_type = 'cancel'
WHERE l.id IS NULL;</code>
Salin selepas log masuk

Ini LEFT JOIN mengembalikan semua baris daripada jadual reservation. Baris yang sepadan daripada reservation_log (di mana pembatalan wujud) disertakan. Fasal WHERE l.id IS NULL menapis hasil, hanya mengembalikan tempahan tanpa penyertaan pembatalan yang sepadan dalam reservation_log.

Kedua-dua kaedah berkesan mendapatkan semula tempahan yang tidak dibatalkan. Pendekatan LEFT JOIN umumnya menawarkan prestasi yang unggul. Memilih kaedah terbaik bergantung pada saiz pangkalan data dan pengindeksan.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Tempahan Yang Tidak Diubah Suai dengan Cekap daripada Pangkalan Data?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan