SQLite 3.54.0 發布:CLI 提示可顯示狀態、查詢規劃多項優化

SQLite 3.54.0 CLI terminal with query plan

SQLite 於 2026 年 10 月 9 日發布 3.54.0 版本,官方在版本歷史頁列出這個版本的多項改動。[1]

命令列介面

官方列出的 CLI 改進包含:[1]

  • CLI 提示字串可包含轉義序列以顯示狀態資訊;初始 CLI 提示會以 SQLITE_PS1 與 SQLITE_PS2 環境變數的值初始化(如果這些變數存在)
  • 預設 CLI 提示經強化以利用上述新轉義序列
  • 在行式輸出模式下,即使查詢沒有回傳任何資料列,CLI 現在會預設顯示欄標題
  • 以新的 diskused() 擴充實作 .diskused 命令,取代獨立的 sqlite3_analyzer 工具程式,後者現已棄用
  • 在 unix 上,CLI 輸出未格式化的 BLOB 值時會保留零位元組
  • .mode 命令新增 --rowcount on 與 --titles always 選項,其中 --titles always 現為預設行為,可用 -titles on 還原舊有行為
  • .mode 命令新增 --ifmt 與 --fpfmt 選項,可用 printf 風格的格式字串更精確控制整數與浮點值的顯示
  • -csv 命令列選項會自動停用顯示限制,以維持相容性
  • 預設 CLI 提示會遵循 NO_COLOR 環境變數
  • 以「只含 go 或 / 的行」結束 SQL 命令的能力已停止支援(此功能分別為相容 SQL Server 與 Oracle),除非 CLI 以 -DSQLITE_SHELL_LEGACY_COMMAND_TERMINATOR 編譯

查詢規劃改善

官方指出,查詢規劃器有多項改進:[1]

  • 對設有表達式索引的資料表執行 UPDATE 時,若索引的值沒有改變,就不會改動表達式索引
  • 改善 expr OR TRUE 與 expr OR FALSE 的最佳化
  • 忽略 IN 運算子右側 SELECT 語句中的 DISTINCT
  • 帶 LIMIT 1 的 UNION 查詢現以更快、更少記憶體的方式處理

其他改動

官方指出,ALTER TABLE 命令在嘗試新增、刪除或重新命名名為 ROWID、_ROWID_ 或 OID 的欄位時會提錯誤;此外還新增可選擴充 diskused() SQL 函數。[1]

參考資料

[1] SQLite 官方 — Release History Of SQLite(3.54.0,2026 年 10 月 9 日)

[2] SQLite 官方網站

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

*