http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 3104|回复: 2

[总群] [2013-01-09][清晓]把子查询转成链表查询方式可提高效率

[复制链接]
发表于 2013-1-9 10:53:22 | 显示全部楼层 |阅读模式
清晓(332522093) 10:20:59

SELECT     NoteBookID, StartID, EndID, Remark, NoteBookState,
                          (SELECT     OrgID
                            FROM          dbo.ST_NoteBookGet AS b
                            WHERE      (NoteBookID = a.NoteBookID)) AS OrgID,
                          (SELECT     OrgName
                            FROM          dbo.ST_NoteBookGet AS b
                            WHERE      (NoteBookID = a.NoteBookID)) AS OrgName,
                          (SELECT     UserName
                            FROM          dbo.ST_NoteBookGet AS b
                            WHERE      (NoteBookID = a.NoteBookID)) AS UserName,
                          (SELECT     OrgGetDate
                            FROM          dbo.ST_NoteBookGet AS b
                            WHERE      (NoteBookID = a.NoteBookID)) AS OrgGetDate
FROM         dbo.ST_NoteBook AS a

清晓(332522093) 10:21:11

这个sql能优化吗?
[郑州] 站长苏飞<sufei.1013@163.com> 10:25:46

改成联表查询,不要使用子查询
清晓(332522093) 10:26:21

嗯,谢谢啊
[重庆]版主-Eagle(838010363) 10:28:15

select a.NoteBookID, a.StartID, a.EndID, a.Remark, a.NoteBookState,b.OrgID as  OrgID,b.OrgName as OrgName, b.UserName as UserName b.OrgGetDate as OrgGetDate from  dbo.ST_NoteBook as a,dbo.ST_NoteBook as b where a.NoteBookID=b.NoteBookID
[重庆]版主-Eagle(838010363) 10:28:22

语句给你写好了
[重庆]版主-Eagle(838010363) 10:28:47

fuck,写语句的时候就看到苏飞童鞋在回话了
[重庆]版主-Eagle(838010363) 10:31:27

select

a.NoteBookID, a.StartID, a.EndID, a.Remark,a.NoteBookState,
b.OrgID as  OrgID,b.OrgName as OrgName, b.UserName as UserName b.OrgGetDate as OrgGetDate

from

dbo.ST_NoteBook as a,dbo.ST_NoteBook as b

where

a.NoteBookID=b.NoteBookID

Kaelthas<gexiaoliang@vip.qq.com> 10:40:49

SELECT
NoteBookID,
StartID,
EndID,
Remark,
NoteBookState,
OrgID,
OrgName,
UserName,
OrgGetDate,
FROM
ST_NoteBook
LEFT JOIN
ST_NoteBookGet
ON
ST_NoteBook.NoteBookID = ST_NoteBookGet.NoteBookID

Kaelthas<gexiaoliang@vip.qq.com> 10:41:31

还是联结查询会比较好 相比之下 子查询没有效率可言
[重庆]版主-Eagle(838010363) 10:42:01

这个是必须的,这个是正解
[重庆]版主-Eagle(838010363) 10:42:07

刚才看成一张表了
[重庆]版主-Eagle(838010363) 10:42:24

还以为是内部数据复合查询呢
Kaelthas<gexiaoliang@vip.qq.com> 10:43:37

这里明显看出 主次 关系的情况下 使用 外联结 查询可以提高数据检索效率 降低数据库量 和 额外的开销
[重庆]版主-Eagle(838010363) 10:44:11

@Kaelthas 问一个详细的问题
Kaelthas<gexiaoliang@vip.qq.com> 10:45:10

嗯嗯
[重庆]版主-Eagle(838010363) 10:45:12

@Kaelthas 用join的这种方法 和 where 这种方法哪种节约数据库资源?
Kaelthas<gexiaoliang@vip.qq.com> 10:45:47

这怎么比较?
Kaelthas<gexiaoliang@vip.qq.com> 10:46:40

条件语句和建立表联结 应该是两种事务吧
[重庆]版主-Eagle(838010363) 10:46:51

join 是连接2张表撒

where 是通过条件连接2张表撒

哪种对数据库的资源消耗少些

Kaelthas<gexiaoliang@vip.qq.com> 10:47:26

没有试验过 不好说
[重庆]版主-Eagle(838010363) 10:47:45

这个建议去测试一下
Kaelthas<gexiaoliang@vip.qq.com> 10:48:22

找时间问问数据库方面的大神

Kaelthas<gexiaoliang@vip.qq.com> 10:55:07

@[重庆]版主-Eagle 当需要即时计算聚集值并把该值用于外部查询中进行比较时,子查询就比连接更具有优势。如果查询中的SELECT列表所包含的列来自于多个表,那么这时连接的优势要胜过子查询。
貌似很多人都赞成这么一种说法

Kaelthas<gexiaoliang@vip.qq.com> 10:57:29

@[重庆]版主-Eagle 子查询不是大家所推崇的 效率上和表联结查询的方式完全没有可比性
[郑州] 站长苏飞<sufei.1013@163.com> 10:57:48

这些我都无视
[郑州] 站长苏飞<sufei.1013@163.com> 10:58:13

直接使用试图不就完了,(当然我说的是Sql,因为其它数据库我也不用,呵呵)
[重庆]版主-Eagle(838010363) 10:58:22

@Kaelthas 也就是说join比where节约数据库资源

[重庆]版主-Eagle(838010363)  10:58:22
@Kaelthas 也就是说join比where节约数据库资源

苏飞大大,视图也是用T-Sql写的
Kaelthas<gexiaoliang@vip.qq.com>  10:59:59
嗯嗯 视图就是典型的预处理表联结查询语句
[重庆]版主-Eagle(838010363)  11:00:02
不过貌似视图中的T-Sql还真没有where这种玩法
[郑州] 站长苏飞<sufei.1013@163.com>  11:00:17
有时候会有,视图能建所引啊





1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2013-1-9 10:54:40 | 显示全部楼层
基本上所有的子查询都能转成链表查询,当然性能上子查询和链表查询是没有办法比的,链表查询 的速度是子查询没有办法赶上的,建议少使用子查询。最后达到不使用
发表于 2013-1-9 10:56:29 | 显示全部楼层
擦汗!
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-5-29 10:17

© 2014-2021

快速回复 返回顶部 返回列表