我正在使用 MariaDB 10.11.6,并且有一个包含日志数据的大表(约 14 亿行)。
我正在尝试将索引添加到VIRTUAL
使用以下命令创建的列:
ALTER TABLE log_table ADD COLUMN Days int(11) UNSIGNED AS (TO_DAYS(LogTime)) VIRTUAL INVISIBLE;
根据生成列的MariaDB文档,这应该是可能的,但我收到以下错误:
ERROR 1904 (HY000): Key/Index cannot be defined on a virtual generated column
该表使用“Aria”存储引擎,并且应该支持生成的列:
InnoDB、Aria、MyISAM 和 CONNECT 支持生成列
应该支持在生成的列上添加索引:
支持在 VIRTUAL 和 PERSISTENT 生成的列上定义索引。
注意:相关表也按列进行分区datetime
,使用的代码类似于VALUES LESS THAN TO_DAYS('2024-02-15')
Rick James 的分区维护指南。
您能帮我找出为什么我无法在生成的虚拟列上创建索引吗?
最好的问候
-Bjarne
这似乎是一个悬而未决的问题:MDEV-18812,Add support for generated indexed virtual columns to aria。它是在 2019-03-04 创建的,所以我不会屏住呼吸等待解决方案
为此,我创建了一个Fiddle、MariaDB 10.9 for aria(失败)和 innodb(成功)