MySQL
MySQL
ALTER TABLE orders
ADD COLUMN total_with_tax DECIMAL(12,2)
GENERATED ALWAYS AS (total * 1.13) STORED;
-- 虚拟列(默认 VIRTUAL)可加二级索引
ALTER TABLE orders
ADD COLUMN order_year INT GENERATED ALWAYS AS (YEAR(created_at)) VIRTUAL,
ADD INDEX idx_year (order_year);PostgreSQL
PostgreSQL
ALTER TABLE orders
ADD COLUMN total_with_tax numeric(12,2)
GENERATED ALWAYS AS (total * 1.13) STORED;
-- PG 目前仅支持 STORED 形式| MySQL | VIRTUAL 不落盘、查询时计算;STORED 落盘、可索引 |
|---|---|
| PostgreSQL | 仅 STORED;表达式需不可变 |
| 用途 | 把表达式固化成列,配合索引服务固定查询模式 |