select distinct a.code,b.ip, g.techname, d.name
from t1 a, t2 d, t3 g
where a.line in('5681','5693','5671')
and a.no = g.no
and a.code = d.code主要是 in那里 大侠们怎么优化优化???SQL PLSQL、语句优化
from t1 a, t2 d, t3 g
where a.line in('5681','5693','5671')
and a.no = g.no
and a.code = d.code主要是 in那里 大侠们怎么优化优化???SQL PLSQL、语句优化
解决方案 »
- 使用PL/SQL 导出用户对象后 怎么导入?
- 一个访问ORACLE数据库的问题
- 编写存储过程,生成按年度分类的汇总销售额报表:包括:年度(标题)、年度销售额小计、季度、订单数、销售额;
- oracle如何实现多个字段单独分组?
- 11g中,OracleDBConsoleorcl不能启动,需要查看什么目录下的什么日志文件呢?
- SQL语句总是异常,太杯具了
- 我们公司的数据库在表中都是用两列分别记录日期和时间的,怎么用sql得出时间差?
- 联边远程数据库时报错,急!!!急!!!!
- 如何将一个表更新前和更新后的记录,插入到另外一个表中?
- oracle增量备份
- 求助,jpa sequence主键生成策略是如何实现生成唯一ID的?如何取ID
- 困扰了我2天的问题~~在sql2005上建oracle10g的链接服务器
2)改成exists试试效果会怎样?
可以考虑在A 表的line no code 建索引!
B表的No建索引
G表的code 建索引!
可以给line 加索引
效率慢应该不是这个IN造成的,一般都是关联了大造成查询效率低,
从SQL来看应该是t1 a, t3 g中有一个大表,
建议给大表的no 字段加索引就OK!!!
FROM(
SELECT A.CODE, A.NO
FROM T1 A
WHERE A.LINE IN ('5681','5693','5671')) MT
LEFT OUTER JOIN T2 D ON MT.NO = D.NO
LEFT OUTER JOIN T3 G ON MT.CODE = G.CODELINE上面要建索引,看你这三个条件的数据量,IN会走索引的。
你的T2, T3表直接拿来关联,有没有什么条件可以过滤T2, T3. 可以优化。
DISTINCT 可以考虑其他写法。
FROM(
SELECT A.CODE, A.NO
FROM T1 A
WHERE A.LINE IN ('5681','5693','5671')) MT
LEFT OUTER JOIN T2 D ON MT.NO = D.NO
LEFT OUTER JOIN T3 G ON MT.CODE = G.CODE
WHERE MYRANK = 1
看这个行不行。不行再调。