码迷,mamicode.com
首页 > 数据库 > 详细

MySQL 5.7新特性之Generated Column(函数索引)

时间:2018-01-31 22:22:34      阅读:524      评论:0      收藏:0      [点我收藏+]

标签:文档   rtu   相对   res   磁盘   使用   sql   uniq   log   

官网原文:https://dev.mysql.com/doc/refman/5.7/en/create-table-generated-columns.html

注:以下是我参考官网文档和结合自己的理解写的,因为英文水平有限,不排除有错误,欢迎纠错。

一、说明

  Generated Column是MySQL 5.7引入的新特性,所谓Cenerated Column,就是数据库中这一列由其他列计算而得。在MySQL 5.7中,支持两种Generated Column,即Virtual Generated Column(虚拟生成的列)Stored Generated Column(存储生成的列),二者含义如下:

  •   1、Virtual Generated Column(虚拟生成的列):不存储该列值,即并不会将这一列数据持久化到磁盘上,而是当读取该行时,触发触发器对该列进行计算显示。InnoDB支持Virtual Generated Column,具体参考“https://dev.mysql.com/doc/refman/5.7/en/create-table-secondary-indexes.html”
  •   2、Stored Generated Column(存储生成的列): 存储该列值,即该列值在插入或更新行时进行计算和存储。所以相对于Virtual Column列需要更多的磁盘空间,与Virtual Column相比并没有优势。因此,MySQL 5.7中,不指定Generated Column的类型,默认是Virtual Column
  • 在表中允许Virtual Column和Stored Column的混合使用
  • 提高效率:由于mysql在普通索引上加函数会造成索引失效,造成查询性能下降,Generated Column(函数索引)刚好可以解决这个问题,可以在Generated Column加上索引来提高效率

 二、创建规则

1 col_name data_type [GENERATED ALWAYS] AS (expression)
2   [VIRTUAL | STORED] [NOT NULL | NULL]
3   [UNIQUE [KEY]] [[PRIMARY] KEY]
4   [COMMENT ‘string‘]

 三、使用

 针对Generated Column使用,参考官网案例来进行说明:

 

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 5.7新特性之Generated Column(函数索引)

标签:文档   rtu   相对   res   磁盘   使用   sql   uniq   log   

原文地址:https://www.cnblogs.com/lyftest/p/8393932.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!