大家帮忙看看一个sql

[复制链接]
查看11 | 回复9 | 2015-3-6 11:57:31 | 显示全部楼层 |阅读模式
我们有一个小区表,保存省份通信的小区信息,还有个region_city保存城市和地区关系
下面一个sql,大家看看有没有优化的可能(需要小区自身关联三次)
select e.int_id cell1800,e.related_btssm site1800,e.longitude,e.latitude,
e.dir,e.related_btssm site900
from
cell e, cell b, cell a
where
a.city_id in (select r.city_id from region_city r)
and a.sys_type=1

and b.longitude=a.longitude
and b.latitude=a.latitude
and b.sys_type=2

and e.related_btssm=b.related_btssm

group bye.int_id,e.related_btssm,e.longitude,e.latitude,e.dir,
e.related_btssm

order by e.related_btssm,e.dir
回复

使用道具 举报

千问 | 2015-3-6 11:57:31 | 显示全部楼层
up
回复

使用道具 举报

千问 | 2015-3-6 11:57:31 | 显示全部楼层
请提供主键/唯一性约束情况
回复

使用道具 举报

千问 | 2015-3-6 11:57:31 | 显示全部楼层
因为你只需要e的字段,可以先尝试一下用exists代替表关联,这样不就不需要对数据做group by了
回复

使用道具 举报

千问 | 2015-3-6 11:57:31 | 显示全部楼层
primary key:int_id
索引:
1:city_id
2.related_btssm
回复

使用道具 举报

千问 | 2015-3-6 11:57:31 | 显示全部楼层
关注
回复

使用道具 举报

千问 | 2015-3-6 11:57:31 | 显示全部楼层
请提供下索引信息
回复

使用道具 举报

千问 | 2015-3-6 11:57:31 | 显示全部楼层
索引上面已经提供了
在cell表上创建了两个索引
一个是在city_id上
一个是在related_btssm
都是普通索引
回复

使用道具 举报

千问 | 2015-3-6 11:57:31 | 显示全部楼层
原帖由 space6212 于 2009-7-8 12:23 发表
因为你只需要e的字段,可以先尝试一下用exists代替表关联,这样不就不需要对数据做group by了

group by 可能是起到distinct的作用
回复

使用道具 举报

千问 | 2015-3-6 11:57:31 | 显示全部楼层
select /*+ ordered use_hash(a b c r)*/ distinct e.int_id cell1800,e.related_btssm site1800,e.longitude,e.latitude,
e.dir,e.related_btssm site900
from
region_city r, cell a, cell b, cell e
where
a.city_id = r.city_id
and a.sys_type=1

and b.longitude=a.longitude
and b.latitude=a.latitude
and b.sys_type=2

and e.related_btssm=b.related_btssm

order by e.related_btssm,e.dir
[ 本帖最后由 rollingpig 于 2009-7-8 16:46 编辑 ]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行