You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MariaDB虚拟生成列与内置函数,哪个查询速度更快?

两种日期格式转换查询的对比说明

咱们先明确前提:myTable表中的date字段默认存储格式为YYYY-MM-DD,下面两种查询都能得到DD-MM-YYYY格式的日期结果,我来给你拆解它们的差异:

查询1:实时调用date_format函数转换

这种方式是在查询时直接对date字段做格式转换:

select date_format(`date`,'%d-%m-%Y') from myTable;
  • 优点:写法直接,不需要预先定义额外字段
  • 注意点:因为用函数包装了原字段,即使date有索引,这个查询也无法利用索引来优化(如果只是单纯查询转换后的格式,性能影响不大,但如果有过滤条件的话会更明显)

查询2:使用虚拟生成列genDate

这里的genDate是一个未建立索引的虚拟生成列,它的预定义规则是:

date_format(date,'%d-%m-%Y') as genDate

查询时直接调用这个列即可:

select `genDate` from myTable;
  • 优点:SQL语句更简洁,不用重复编写格式转换的逻辑
  • 注意点:因为该列没有索引,当前的查询性能和查询1基本一致;但如果后续需要基于genDate做过滤、排序等操作,可以给它添加索引,届时性能会比实时调用函数的方式更优

内容的提问来源于stack exchange,提问作者sangnandar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:22:58