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;
  • 构造日期序列,用于预订系统等应用程序。
  • 构造时间序列。
广告