当我们执行sql语句的查询条件中包含函数,那么数据库就无法使用索引来优化查询,因为它需要对每一行数据都调用函数来计算结果,这会导致查询速度变慢。
例如:
SELECT * FROM table_name WHERE name = 'John' AND age(+) > 30;
这个查询语句中使用了 age(+) 函数,它表示 age 列包含非空值。这个函数需要对每一行数据都进行计算才能得到结果,因此查询就无法使用索引来优化查询,可能导致查询速度变慢。
此时就是遍历了整张表,索引就失效了。
数据库中哪些函数会导致索引失效
解决方法之一
我们可以冗余你要查询时计算的字段,这个字段通过后台计算传给数据库。(虽然会打破数据库的第三范式,但是却提升了效率)