sql查询增加一个查询条件后速度变慢,怎么样优化? 10

SELECTDISTINCTbl.id,bl.key_name,bl.city_id,bl.kind,bl.station_countsFROMshannxi.dbo.b... SELECT DISTINCT
bl.id,
bl.key_name,
bl.city_id,
bl.kind,
bl.station_counts
FROM
shannxi.dbo.bus_line bl
INNER JOIN shannxi.dbo.bus_station bs ON bl.busid = bs.bus_id
--AND bl.isdisplay = 0
INNER JOIN (
SELECT
bsn.id,
bsn.station_name,
bsn.kind,
bsn.lat,
bsn.lng
FROM
t_scheme sc
INNER JOIN t_schememedia sm ON sc.id = sm.schemeid
AND sc.provinceId = 27
AND sc.mediaparentid = 6
AND sc.id = 4
INNER JOIN shannxi.dbo.bus_station_new bsn ON bsn.id = sm.projectid
) ss ON bs.station_name = ss.station_name
AND bs.kind = ss.kind
AND ABS(bs.lat - ss.lat) < 0.05
AND ABS(bs.lng - ss.lng) < 0.05
ORDER BY
bl.station_counts ASC

增加AND bl.isdisplay = 0这个条件速度就变得比较慢,去掉速度很快
刚才发现其实没啥问题,在别人电脑上都嗖嗖的,郁闷,就这样了
展开
 我来答
匿名用户
2016-06-30
展开全部
你的这个查询要优化的地方不是not in, 而是整个查询的结构: 使用了太多的子查询,而且都是查找的相同的表(GISDUCT表查询4次),这肯定不是好的查询方法,应该把你要达到的目的再思考,转化成合适的查询语句。
个人认为,你算OCCUPYCOUNT和TOTALCOUNT的子查询应该可以在一个查询中搞定的,因为都是查询GISDUCT表,只是统计取值的条件有所不同罢了,而按条件统计可以用类似“case when 条件 then count(xxx) else 0 end”的结构来实现。有问题可再讨论。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式