MySQL - 生成列(generated column):在列定义中包含表达式



前言

  1. 索引(index) 在SQL中可以大大提高 查询效率。

  2. SQL索引列中,如果使用了运算和函数,索引将无法生效。

  3. 如果索引列的数据量大且稳定,可以使用 生成列 来固定对索引列的计算和函数运算,并对该生成列添加索引提高查询效率。


如何创建生成列

官网原文:https://dev.mysql.com/doc/refman/5.7/en/create-table-generated-columns.html
CREATE TABLE支持生成列的规范。根据列定义中包含的表达式计算生成列的值。

NDB从MySQL NDB Cluster 7.5.3开始,存储引擎 支持生成列 。

举例:

通过sidea和sideb列中直角三角形的边的长度 ,并计算下斜边的长度 sidec(其他边的平方和的平方根):
CREATE TABLE triangle (
  sidea DOUBLE,
  sideb DOUBLE,
  sidec DOUBLE AS (SQRT(sidea * sidea + sideb * sideb))
);
INSERT INTO triangle (sidea, sideb) VALUES(1,1),(3,4),(6,8);

从表中选择将产生以下结果:

mysql> SELECT * FROM triangle;
+-------+-------+--------------------+
| sidea | sideb | sidec              |
+-------+-------+--------------------+
|     1 |     1 | 1.4142135623730951 |
|     3 |     4 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值