在版本10.0.3中,mariadb引入了一种称为序列的存储引擎。 其ad hoc为操作生成整数序列,然后终止。 该序列包含正整数,以降序或升序排列,并使用起始,结束和递增值。
它不允许在多个查询中使用,只能在其原始查询因为其虚拟(不写入磁盘)性质。 但是,序列表可以通过alter命令转换为标准表。 如果删除转换的表,序列表仍然存在。 序列也不能产生负数或以最小/最大值旋转。
使用序列需要安装序列引擎,mariadb作为插件而不是二进制分发。 使用以下命令安装它 -
install soname "ha_sequence";
安装后,验证它 -
show enginesg
请记住,在引擎安装后,您不能创建具有使用序列语法的名称的标准表,但可以创建具有序列语法名称的临时表。
有两种方法创建序列 -
创建表并使用auto_increment属性将列定义为自动递增。
使用现有数据库并使用序列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;