TIDB表达式索引

本文探讨了在TiDB数据库中如何利用表达式索引来优化基于函数的查询性能,如lower(col1)为例,介绍了创建、使用和删除表达式索引的方法,并强调其在提升查询效率上的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用MySQL数据库,并有SQL优化经验的开发者都知道,在字段上使用函数,是无法走索引的,

最近使用TiDB数据库,发现有个概念叫做 “表达式索引

在一些场景中,查询的条件往往是基于某个表达式进行过滤。

在这些场景中,一般的索引不能生效,执行查询只能遍历整个表,导致查询性能较差。表达式索引是一种特殊的索引,能将索引建立于表达式上。在创建了表达式索引后,基于表达式的查询便可以使用上索引,极大提升查询的性能。

假设要基于 lower(col1) 这个表达式建立索引,示例的 SQL 语句如下:

CREATE INDEX idx1 ON t1 ((lower(col1)));

或者等价的语句:

ALTER TABLE t1 ADD INDEX idx1((lower(col1)));

注意:

表达式索引中的表达式需要用 ( 和 ) 包围起来,否则会报语法错误。

删除表达式索引与删除普通索引的方法一致:

DROP INDEX idx1 ON t1;

参考链接:https://docs.pingcap.com/zh/tidb/stable/sql-statement-create-index

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

上尤流苏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值