导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

先关联后查询,还是先查询后关联?

sym1978 2003-12-24 11:03:43
产品表Product
单据表Bill
单据明细视图(View_Bill)把产品表跟单据表关联起来

例:我想查询单据号为123
如以 Select * From View_BIll Where BIll='123'
这种方式是先关联再查询,

我是想是否可查询单据为123的记录集后,再把该记录集跟产品表关联
这种方式在当单据到一定量后会比较快,

不知哪位大虾需到这种问题,可否指教一二
...全文
85 点赞 收藏 11
写回复
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
devilwind 2003-12-25
但资料多的时候先查询再关联会快点!
回复
wanghong9631217 2003-12-25
哈哈哈,还是自己测试一下比较放心啊
回复
bobohuang 2003-12-25
我已進行測試,SQL SERVER中滿足數據庫理論,優化理論為先笛卡兒乘績,後選擇,最後投影!
所以,沒有區別!
回复
aierong 2003-12-24
关联时就可以查询
回复
xionglibin 2003-12-24
先查詢後關聯,當資料多時就會看出速度的問題了。
回复
victorycyz 2003-12-24
这样更快:

select ...
from product a join 单据明细 b on a.产品id=b.产品id
where b.bill='123'
回复
Rotaxe 2003-12-24
效果是一样的
回复
oldcold 2003-12-24
效果不明显
回复
w_rose 2003-12-24
如果使用很“烂”的小型数据库,就可能有这样的担心。尽管那些数据库经常宣称比SQL Server快7倍,但是看看它对程序员的要求:程序员要自己手工处理有关索引树、数据锁类型、事务备份日志、先查询还是先关联等等问题。看起来理论很高很丰富,其实要做到稳定、准确、高吞吐量等等还是让你轻轻松松地满足这些要求的工具才是真正地“高”。
回复
w_rose 2003-12-24
在写成“from product a join 单据明细 b on a.产品id=b.产品id where b.bill='123'”
”中,根本没有(也不需要)明确先查询还是先关联。SQL Server会根据索引情况、表的统计信息(统计数据的多少、分布情况)等来动态规划查询方法。
回复
sym1978 2003-12-24
哪位比较权威呀,这么多意见听谁的呀!
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告