第 2 部分:非 SARGable 查詢條件
和大多數程式設計師一樣,資料庫開發人員或多或少傾向於撰寫直接翻譯指定請求的程式碼。大多數程式設計語言(包括 SQL)被設計為人們看得懂的,這也導致了一個問題。為什麼會有問題?所有程式設計語言都能比其他語言更快地執行某些作業。在關聯式資料庫中,查詢最佳化工具用於分析 SQL 查詢,並判斷稱為查詢計劃的高效執行機制。最佳化工具能為每個查詢產生一個或多個查詢計劃,每個查詢計劃代表一種可能的查詢執行方式。然後選取最有效的査詢計劃,並利用它來執行査詢。事實證明,模仿請求語言的 SQL 甚少是最有效的方法。
在常見的 SQL 查詢錯誤系列的這一部分中,我們將探討一個撰寫得不好的 SQL 陳述式的範例,並以提高效率的方式重寫它。
NOT IN 與 NOT EXISTS
在程式設計界,「反面模式(anti-pattern)」是一個常用術語。它指的是解決經常出現的問題的方法,而這方法不僅無效,而且有可能適得其反。這個術語最初是由電腦程式師 Andrew Koenig 於 1995 年在其著作《設計模式》中創造的,作為被認為既可靠又有效的設計模式的反義詞。
根據日期查詢
在 MySQL 中的日期和時間系列的最後一部分中,我們將透過撰寫 SELECT 查詢來取得資料中與日期相關的細節,從而將迄今為止所學到的一切付諸實踐。
建立日期或時間
在這個關於日期和時間的系列文章中,我們探討了 MySQL 的五種時序資料類型,以及它的眾多日期或時間導向的函式。在本文章中,我們將介紹幾種在 MySQL 中建立日期和時間的方法。
重要的函式
在本系列關於日期和時間的前兩部分中,我們介紹了 MySQL 的五種時序資料類型。現在是時候把我們的注意力轉移到 MySQL 的眾多日期或時間導向的函式了。
取得目前日期和時間
早在 2021 年 5 月,我們就從如何取得目前日期和時間開始,介紹了 SQL Server 的一些值得注意的日期和時間函式。它為此提供了 GETDATE() 函式。MySQL 的對應函式簡稱為 NOW()。在 Navicat for MySQL 16 中,我們可以在不連接資料庫的情況下呼叫此函式,因為我們沒有選取任何資料表欄:
- 2025 (1)
- 2024 (1)
- 2023 (1)
- 2022 (1)
- 2021 (1)
- 2020 (1)
- 2019 (1)
- 2018 (1)
- 2017 (1)