查询条件不要使用函数
建议 where 条件中的列尽量不使用函数运算,因为加函数运算会造成智能索引失效,sql 性能降低
示例
原始 sql 为:
where substr(product_no, 2, 1) in ('3', '4', '5', '8')
智能索引失效,性能非常低。 改写为:
where (product_no like '13%' or product_no like '14%' or product_no like '15%' or
product_no like '18%')'
智能索引将对字符串类型数据前 8 个字符的索引。
避免操作字段表达式后进行比较
1. 使用智能索引且最有效的方法是字段与常量表达式直接操作的形式:
(rownumtag>=100*10);
改成
(rownumtag+1>=100*10+1);
上述SQL就无法使用智能索引。
2. 其次一边是字段,另一边是常量表达式(常量当然也可以),常量表达式无 论多么复杂都没有问题,因为它只需要计算一遍。
表达式与常量进行比较的条件不能用智能索引。 如:
SELECT ... FROM ... WHERE ceil(rownumtag / ceil(TO_NUMBER('100')))
='10' ;
改为:
SELECT ... FROM ... WHERE rownumtag>100*9 AND rownumtag<=100*10
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




