千呼万唤始出来,MySQL 8.0索引三剑客之函数索引

MySQL 8.0新特性专栏目录

《MySQL开发规范》过时了,视图查询性能提升了一万倍
你真的会用EXPLAIN么,SQL性能优化王者晋级之路
索引三剑客之降序索引和不可见索引
千呼万唤始出来,MySQL 8.0索引三剑客之函数索引
双重密码,MySQL 8.0创新特性
sql_mode兼容性,MySQL 8.0 升级踩过的坑
警惕参数变化,MySQL 8.0 升级避免再次踩坑



前言

独孤九剑,重剑无锋,大巧不工,通晓剑意,无所施而不可。三剑客之首,函数索引。
函数索引这个概念并不新颖,Oracle早在十年前的Oracle10g中就支持了函数索引,函数索引在Oracle数据库中使用相当广泛和成熟,而MySQL却一直没有开发相关的索引功能。不过好消息是,MySQL 终于在8.0版本引入了这一特性。真的是,千呼万唤始出来,不过好歹还是来了。

普通索引是对列值或列的前缀值进行索引,而MySQL 8.0.13之后支持函数索引,函数索引是对表中的列执行表达式计算后的结构进行索引,而不是对列或列前缀值。使用函数索引可以对未直接存储在表中的数据进行索引。

函数索引为应用程序提供了极大的便利和性能提升。


1. 创建和使用函数索引

1.1 创建函数索引

创建函数索引的语法跟普通索引差别并不大,唯一需要注意的是函数索引对应的表达式需要用()括起来。

首先, 函数索引可以对单列的表达式进行索引,如下:

# 创建单列表达式索引
alter table t_wang add index idx_func(date(col1));

其次,函数索引也可以对多列组合的表达式进行索引,如下:

# 创建多列组合表达式索引
alter table t_wang add index idx_func((col1 + col2));

然后,函数索引也可以将表达式和普通列组合一起构成组合索引,如下:

# 创建组合索引
alter table t_wang add index idx_func(col1, (date(col1)));

最后,函数索引还可以跟其他选项,如unique 和 asc、desc排序一起使用,如下:

# 创建表达式排序索引
alter table t_wang add unique index idx_func(col1, (date(col1)) desc);

1.2 使用函数索引提升性能

函数索引可以对字段表达式进行索引,从而在SQL语句中包含表达式的情况下可以显著提升查询性能。

测试案例:

a) 创建测试表t_wang,导入一些测试数据,在时间列创建一个普通索引

# 查看表结构,测试表的时间列有个普通索引
MySQL [test]> show create table t_wang\G
*************************** 1. row ***************************
       Table: t_wang
 CREATE TABLE `t_wang` (
  `id
  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
回答: Kotlin在使用依赖注入时,可以使用Hilt库来实现。Hilt是一个基于Dagger的依赖注入框架,专门为Android应用程序设计。\[1\]在序列化和反序列化方面,Kotlin最常用的库是Gson。然而,由于Gson无法完全支持Kotlin的特性,社区也维护了一些第三方库,如Moshi。但是,个人认为随着官方库的出现,Moshi可能会逐渐被取代。\[2\]在Kotlin中,如果要使用序列化,可以使用@Serializable注解来标记数据类,并使用Json.decodeFromString函数来进行反序列化操作。\[3\] #### 引用[.reference_title] - *1* [Kotlin 38. Dependency Injection依赖注入以及Hilt在Kotlin中的使用,系列1:依赖注入介绍](https://blog.csdn.net/zyctimes/article/details/129218437)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [千呼万唤出来,Kotlin官方序列化库终相见(一)](https://blog.csdn.net/weixin_55362248/article/details/121906615)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值