MariaDB - 序列



在 10.0.3 版本中,MariaDB 引入了一種名為 sequence 的儲存引擎。它可以為操作臨時生成一個整數序列,然後終止。序列包含按降序或升序排列的正整數,並使用起始值、結束值和增量值。

由於其虛擬(未寫入磁碟)的性質,它不允許在多個查詢中使用,只能在其原始查詢中使用。但是,可以透過 ALTER 命令將序列表轉換為標準表。如果刪除轉換後的表,序列表仍然存在。序列也不能產生負數或在最小值/最大值處迴圈。

安裝 Sequence 引擎

使用序列需要安裝 sequence 引擎,MariaDB 將其作為外掛而不是二進位制檔案分發。使用以下命令安裝:

INSTALL SONAME "ha_sequence";

安裝後,驗證它:

SHOW ENGINES\G

請記住,引擎安裝後,不能使用 sequence 語法建立同名的標準表,但可以使用 sequence 語法建立臨時表。

建立序列

有兩種建立序列的方法:

  • 建立一個表,並使用 AUTO_INCREMENT 屬性將列定義為自動遞增。

  • 使用現有資料庫,並使用 sequence SELECT 查詢來生成序列。該查詢使用 seq_ [FROM] _to_[TO] 或 seq_[FROM]_to_[TO]_step_STEP 語法。

最佳實踐建議使用第二種方法。請檢視下面給出的序列建立示例:

SELECT * FROM seq_77_to_99;

序列有很多用途:

  • 查詢列中缺失的值,以防止操作中出現相關問題:

SELECT myseq.seq FROM seq_22_to_28 myseq LEFT JOIN table1 t ON myseq.seq
   = x.y WHERE x.y IS NULL;
  • 構造值的組合:

SELECT x1.seq, x2.seq FROM seq_5_to_9 x1 JOIN seq_5_to_9 x2 ORDER BY 5, 6;
  • 查詢數字的倍數:

SELECT seq FROM seq_3_to_100_step_4;
  • 構造日期序列,用於預訂系統等應用程式。
  • 構造時間序列。
廣告