sql优化

Posted 冥思苦想

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql优化相关的知识,希望对你有一定的参考价值。

from后的表名

oracle的解析器按照从右到左的顺序处理from子句中的表名
因此from子句中写在最后的表将被最先处理
在from 子句中包含多个表的情况下,你必须选择记录条数最少的表放在最后

例如:
表 TAB1 16384 条记录
表 TAB2 1 条记录
选择 TAB2作为基础表 (最好的方法)
select count(*) from tab1 left join tab2 执行时间 0.96秒
选择 TAB2作为基础表 (不佳的方法)
select count(*) from tab2,tab1 执行时间 26.09秒

将可以过滤掉最大数量记录 的条件
写在where子句的末尾

表中loanacno=ln001能匹配到4条数据
表中currsign=‘CNY‘能匹配到15000条数据

select * from F_LN_LOAN_INFO
where loanacno=‘ln001‘
and currsign=‘CNY‘

select * from F_LN_LOAN_INFO
where currsign=‘CNY‘
and loanacno=‘ln001‘

解释器先执行后面语句

第一种方式会先匹配currsign=‘CNY‘,找到了15000条数据,然后会在这15000条数据中进行loanacno=‘ln001‘的查找

第二种方式会先匹配loanacno=‘ln001‘,找到了4条数据,然后会在这4条数据中进行currsign=‘CNY‘的查找

以上是关于sql优化的主要内容,如果未能解决你的问题,请参考以下文章

使用 C++ 反转句子中的每个单词需要对我的代码片段进行代码优化

如何优化C ++代码的以下片段 - 卷中的零交叉

sql sql里面的代码片段

从JVM的角度看JAVA代码--代码优化

Microsoft SQL Server 代码片段收集

缺少 SQL SERVER 2014 代码片段