当一条查询sql语句不得不关联两张以上的表时,怎样解决这条语句的查询效率?

当一条查询的sql语句,需要关联两张以上的表,而且查询条件也在三个以上时,怎样提高这条语句的查询效率?

10个回答

1、优化SQL,建索引,收集统计信息。
2、使用标量查询。
3、使用ibatis的 RowHandler。

给查询条件建索引
不要from两个表,用连接join

1W条数据量应该不算很大,这种查询应该是可以接受的

把能筛选出更少数据的查询条件放后面。
可以直接分析SQL的执行计划。
join会出现重复数据?
不会吧,没加join条件吗?~

使用合适的索引和驱动表试试?

先看看执行计划,是有不少全表扫描吧
这种情况加索引~是不错的选择

这是本机上的数据量,测试环境上的比本机上多十几倍,就是因为关联的表多了,筛选的速度会很慢,表是都已经创建好了的,跟后台商量创建索引是没戏了。现在查询结果就返回一条数据,都需要花时[color=red]9422秒[/color]

不会吧,我一个表查一次也不用花这么多时间吧。

把你分析的原因告诉他嘛,如果不愿意加,领导问起来了,就直接说,让他负责查询慢的问题。

一个标量子查询是一个放在圆括弧里的普通 SELECT查询, 它只返回只有一个字段的一行.
select a.username,count(*) from all_users a,all_objects b
where a.username=b.owner(+)
group by a.username;

可以写成

select a.username,(select count(*) from all_objects b where b.owner=a.username) cnt
from all_users a;

几百万数据的关联,对于数据库来说没有任何问题的

主要是优化你查询的SQL语句,包括索引,主键,共享SQL,分区,别使用exists,in,使用关联代替qiantao 等优化

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问