搜索
首页数据库mysql教程MySQL中生成的列是什么?

MySQL中生成的列是什么?

MySQL中生成的列是MySQL 5.7.8中引入的功能,允许用户定义使用同一表中其他列从表达式计算的列。这些列可以是虚拟的或存储的。虚拟生成的列是在读取时计算的,而在插入或更新行然后存储在行中时,计算存储的生成的列是计算的。

用于创建生成列的语法如下:

 <code class="sql">CREATE TABLE t1 ( a INT, b INT, c INT AS (ab) VIRTUAL, d INT AS (ab) STORED );</code>

在此示例中, c是虚拟生成的列, d是存储的生成列,均根据列ab的总和计算出。

生成的列如何改善MySQL中的数据库性能?

生成的列可以通过多种方式显着改善MySQL的数据库性能:

  1. 降低的存储要求:通过使用虚拟生成的列,您可以减少存储要求,因为该值是随时计算的,而不是存储在磁盘上。这对于不需要存储的计算特别有用。
  2. 改进的查询性能:生成的列可以在索引中使用,这可以加快查询性能。例如,如果您经常根据两个列的总和查询表,则可以为此总和创建一个存储的生成列并索引它,从而加快在其where子句中使用此列的查询。
  3. 简化查询:通过使用生成的列预先计算值,您可以简化SQL查询,这可以导致更好的性能。例如,您可以将表达式的结果存储在生成的列中,而不是反复在Select语句中计算复杂的表达式。
  4. 有效的更新:使用存储的生成列时,对源列的更新将自动更新生成的列,从而确保数据一致性在大多数情况下而无需其他开销。

MySQL支持哪些类型的生成列以及它们有何不同?

MySQL支持两种类型的生成列:虚拟和存储。

  • 虚拟生成的列:这些列未存储在磁盘上;相反,每当读取行时,它们就会随时计算。虚拟生成的列的优点是它们保存磁盘空间,因为它们不存储计算的值。但是,他们每次访问时可能会产生性能成本,因为必须在阅读时间执行计算。
  • 存储的生成列:这些列存储在磁盘上计算的值。当行插入或更新时,计算和存储该值。当计算昂贵或经常在查询中访问列时,存储的生成的列可能是有益的,因为计算仅在写操作时完成,而不是在读取时间进行。但是,它们需要额外的存储空间。

虚拟和存储生成的列之间的选择取决于特定的用例和性能考虑因素,例如读取和写入操作的频率,计算的复杂性以及数据库的存储约束。

在MySQL中实现生成的列有哪些实际用例?

生成的列在MySQL中具有几个实际用例:

  1. 计算出生日期的年龄:如果用户表中有一个date_of_birth列,则可以创建生成的列来计算年龄。例如:

     <code class="sql">CREATE TABLE users ( id INT, date_of_birth DATE, age INT AS (TIMESTAMPDIFF(YEAR, date_of_birth, CURDATE())) VIRTUAL );</code>
  2. 全名串联:如果您有一个单独的列和姓氏,则可以创建一个生成的列以将它们组合成全名:

     <code class="sql">CREATE TABLE employees ( id INT, first_name VARCHAR(50), last_name VARCHAR(50), full_name VARCHAR(101) AS (CONCAT(first_name, ' ', last_name)) STORED );</code>
  3. 地理计算:对于具有纬度和经度列的表,您可以创建一个生成的列来计算距固定点的距离:

     <code class="sql">CREATE TABLE locations ( id INT, lat DECIMAL(10, 8), lon DECIMAL(11, 8), distance_from_home DECIMAL(10, 2) AS ( 3959 * acos ( cos ( radians(40.7128) ) * cos( radians( lat ) ) * cos( radians( lon ) - radians(-74.0060) ) sin ( radians(40.7128) ) * sin( radians( lat ) ) ) ) VIRTUAL );</code>
  4. 库存管理:您可以使用生成的列来跟踪基于数量和单位价格的库存项目的总价值:

     <code class="sql">CREATE TABLE inventory ( id INT, item_name VARCHAR(100), quantity INT, unit_price DECIMAL(10, 2), total_value DECIMAL(10, 2) AS (quantity * unit_price) STORED );</code>

这些示例说明了生成的列如何通过预先计算查询中经常使用的值来简化数据管理和提高查询性能。

以上是MySQL中生成的列是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
mysql blob:有什么限制吗?mysql blob:有什么限制吗?May 08, 2025 am 12:22 AM

mysqlblobshavelimits:tinyblob(255bytes),blob(65,535 bytes),中间布洛布(16,777,215个比例),andlongblob(4,294,967,967,295 bytes).tousebl观察性:1)考虑performance impactsandSandStorelargeblobsextern; 2)管理backbackupsandreplication carecration; 3)usepathsinst

MySQL:自动化用户创建的最佳工具是什么?MySQL:自动化用户创建的最佳工具是什么?May 08, 2025 am 12:22 AM

自动化在MySQL中创建用户的最佳工具和技术包括:1.MySQLWorkbench,适用于小型到中型环境,易于使用但资源消耗大;2.Ansible,适用于多服务器环境,简单但学习曲线陡峭;3.自定义Python脚本,灵活但需确保脚本安全性;4.Puppet和Chef,适用于大规模环境,复杂但可扩展。选择时需考虑规模、学习曲线和集成需求。

mysql:我可以在斑点内搜索吗?mysql:我可以在斑点内搜索吗?May 08, 2025 am 12:20 AM

是的,YouCansearchInIdeAblobInMysqlusingsPecificteChniques.1)转换theblobtoautf-8StringWithConvertFunctionWithConvertFunctionandSearchusiseLike.2)forCompresseBlyblobs,useuncompresseblobs,useuncompressbeforeconversion.3)acpperformance impperformance imperformance imptactsanddataEccoding.4)

MySQL字符串数据类型:综合指南MySQL字符串数据类型:综合指南May 08, 2025 am 12:14 AM

mysqloffersvariousStringDatatYpes:1)charforfixed Lengtth Strings,IdealforConsistLengthDatalikeCountryCodes; 2)varcharforvariable长度长,合适的forfieldslikenames; 3)texttypefesforepesforlargertext,forforlargertext,goodforforblogblogpostsbutcan impactcuctcuctcuctpercrance; 4)biland;

掌握mysql blobs:逐步教程掌握mysql blobs:逐步教程May 08, 2025 am 12:01 AM

TomasterMySQLBLOBs,followthesesteps:1)ChoosetheappropriateBLOBtype(TINYBLOB,BLOB,MEDIUMBLOB,LONGBLOB)basedondatasize.2)InsertdatausingLOAD_FILEforefficiency.3)Storefilereferencesinsteadoffilestoimproveperformance.4)UseDUMPFILEtoretrieveandsaveBLOBsco

MySQL中的BLOB数据类型:开发人员的详细概述MySQL中的BLOB数据类型:开发人员的详细概述May 07, 2025 pm 05:41 PM

blobdatatypesinmysqlareusedforvorvoringlargebinarydatalikeimagesoraudio.1)useblobtypes(tinyblobtolonglongblob)基于dondatasizeneeds。 2)库孔素pet petooptimize绩效。3)考虑Xternal Storage Forel Blob romana databasesizerIndimprovebackupe

如何将用户从命令行添加到MySQL如何将用户从命令行添加到MySQLMay 07, 2025 pm 05:01 PM

toadDuserStomySqlfromtheCommandline,loginasroot,thenusecreateuser'username'@'host'host'Indessifiedby'password'; tocreateanewuser.grantpermissionswithgrantprantallprivilegesondatabase

MySQL中有哪些不同的字符串数据类型?详细的概述MySQL中有哪些不同的字符串数据类型?详细的概述May 07, 2025 pm 03:33 PM

mySqlofferSeightStringDatateTypes:char,varchar,二进制,二进制,varbinary,blob,文本,枚举,枚举和set.1)长度,理想的forconsistentDatatalIkeCountryCodes.2)varcharisvariable长度,长度,效率foriforitifforiticforiticforiticforiticforiticforitic forvaryingdatalikename.3)

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境