首頁 > 資料庫 > mysql教程 > 如何有效地從資料庫中檢索未修改的預訂?

如何有效地從資料庫中檢索未修改的預訂?

DDD
發布: 2025-01-23 19:56:23
原創
464 人瀏覽過

How to Efficiently Retrieve Unmodified Reservations from a Database?

未修改預訂的資料庫查詢

本文解決了從具有兩個表格的資料庫中高效檢索未修改的預訂的問題:reservationreservation_log。 簡單的 WHERE 子句並不適合尋找未取消的預訂;需要更複雜的方法。

方法1:使用NOT IN

排除

一種方法使用否定來排除已取消的預訂。 我們在 reservation_log 中識別已取消的預訂,並從 reservation 表中排除其 ID:

<code class="language-sql">SELECT *
FROM reservation
WHERE id NOT IN (
    SELECT reservation_id
    FROM reservation_log
    WHERE change_type = 'cancel'
);</code>
登入後複製

方法二:使用LEFT JOIN

最佳化查詢

為了獲得更好的效能,尤其是索引列,建議使用 LEFT JOIN

<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>
登入後複製

LEFT JOIN 傳回 reservation 表中的所有行。 包含來自 reservation_log 的符合行(存在取消)。 WHERE l.id IS NULL 子句過濾結果,僅傳回 reservation_log 中沒有符合取消條目的預訂。

這兩種方法都可以有效檢索未取消的預訂。 LEFT JOIN 方法通常提供卓越的性能。 選擇最佳方法取決於資料庫大小和索引。

以上是如何有效地從資料庫中檢索未修改的預訂?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板