赞
踩
使用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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。