首页 > 解决方案 > 如何在 mariadb 上创建功能索引?

问题描述

我正在尝试在mariadb 5.5下面创建功能索引...

MariaDB [testdb]> create table foo(c1 datetime);
Query OK, 0 rows affected (0.43 sec)

MariaDB [testdb]> alter table foo add c2 varchar(10) AS (date_format(c1, '%Y-%m-%d')); 
Query OK, 0 rows affected (0.22 sec)               
Records: 0  Duplicates: 0  Warnings: 0

MariaDB [testdb]> desc foo;
+-------+-------------+------+-----+---------+---------+
| Field | Type        | Null | Key | Default | Extra   |
+-------+-------------+------+-----+---------+---------+
| c1    | datetime    | YES  |     | NULL    |         |
| c2    | varchar(10) | YES  |     | NULL    | VIRTUAL |
+-------+-------------+------+-----+---------+---------+
2 rows in set (0.03 sec)

MariaDB [testdb]> create index idx_foo on foo(c1, c2);
ERROR 1904 (HY000): Key/Index cannot be defined on a non-stored computed column
MariaDB [testdb]> 

有没有如何使用 VIRUAL 列创建基于组合列的索引?

任何意见,将不胜感激。

提前致谢。

标签: mariadb

解决方案


请参阅文档:

生成(虚拟和持久/存储)列

...

MariaDB 直到 10.2.2

在 MariaDB 10.2.2 及之前版本中,以下语句适用于生成列的索引:

  • 不支持在 VIRTUAL 生成的列上定义索引。
  • ...

...


推荐阅读