主题
虚拟列
1. 什么是虚拟列
虚拟列(Virtual Column)是根据表中其它列的表达式计算而来的列,不存储实际数据,而是在查询时动态计算。它可以简化查询逻辑,提升数据一致性。
2. 虚拟列的类型
- 虚拟(Virtual):不占用存储空间,查询时计算。
- 持久化(Stored):计算结果存储在表中,查询更快,但占用存储。
3. 创建虚拟列示例
创建带虚拟列的表:
sql
CREATE TABLE employees (
first_name VARCHAR(50),
last_name VARCHAR(50),
full_name VARCHAR(101) AS (CONCAT(first_name, ' ', last_name)) VIRTUAL
);
查询时,full_name
自动计算 first_name
和 last_name
的拼接结果。
4. 使用持久化虚拟列
如果查询性能要求高,可以使用 STORED
:
sql
CREATE TABLE employees (
first_name VARCHAR(50),
last_name VARCHAR(50),
full_name VARCHAR(101) AS (CONCAT(first_name, ' ', last_name)) STORED
);
5. 注意事项
- 虚拟列不能直接插入或更新,只能通过修改基础列影响其值。
- 支持索引创建,尤其是持久化虚拟列,提高查询效率。
- 适用于计算字段、格式转换、派生数据等场景。
虚拟列是 MariaDB 中强大的功能,能够通过表达式动态生成字段,简化业务逻辑并优化性能。