首页 新闻 搜索 专区 学院

数据库查询数据的问题。

0
悬赏园豆:10 [已解决问题] 解决于 2013-06-03 16:52

例如查询语句

select * from classTable t1

left join studentTable t2 on  t1.Id=t2.classId

where t1.Id=1 and t2.sex='男'

请问:这个查询语句执行的过程,是要把表classTable,studentTable中所有的数据全部加载到内存中再进行笛卡尔积,on过滤,where过滤吗?表数据量很大的话岂不是很废,而且这样的话索引还有什么用?

如果不是的话,又是怎么取得的数据呢!怎么都理不清,请大牛帮忙!

月下*独的主页 月下*独 | 初学一级 | 园豆:128
提问于:2013-05-30 14:30
< >
分享
最佳答案
0

不同的数据库其查询方式不一样。

收获园豆:3
Wolfe Yu | 菜鸟二级 |园豆:434 | 2013-05-31 17:39
其他回答(4)
0

这哥们想问啥。?

哇~怪兽 | 园豆:603 (小虾三级) | 2013-05-30 14:37
0

如果你用的是SqlServer 可以选中这段SQL,然后Ctrl + L ,就可以看到它运行的逻辑了

顺序是 先用Where过滤,然后是JOIN ,最后Select

收获园豆:2
TiestoRay | 园豆:687 (小虾三级) | 2013-05-30 14:41
0

你可以去看看《Microsoft SQL Server 2008技术内幕:T-SQL查询》的“第一章  逻辑查询处理”

收获园豆:2
crazy_rabbit | 园豆:204 (菜鸟二级) | 2013-05-30 16:57

其实我已经看了2005的第一章了,2008没找到。就是因为看了这个,才知道是先join再where的,果然还是要加载所有的数据到内存中去么?而且还是先join再on。

支持(0) 反对(0) 月下*独 | 园豆:128 (初学一级) | 2013-05-30 17:11
0

1,先把T1 数据查出来

2.再把T2符合条件的数据查出来

3.在前两部查询的结果集里在查处符合where条件的数据

  希望对你有帮助

收获园豆:3
AStronghcm | 园豆:313 (菜鸟二级) | 2013-05-30 20:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册