再问个问题,SQL
A表
id,name,charge
B表
id
select id,charge from A inner join B on A.id=B.id
这个查询语句有问题吗?
如果A,B表中都有很多数据,查询会不会很耗时间?
如果是这样,那有什么方法改进吗?
问题点数:20、回复次数:7Top
1 楼LouisXIV(夜游神)回复于 2006-07-03 16:42:39 得分 0
这个基本已经是最优方案了,如果速度还是有问题,检测你的硬件环境或者索性用其他数据库吧Top
2 楼fcuandy(了此残生.)回复于 2006-07-03 16:47:07 得分 0
1,这条语句有没有问题:
肯定有,至少select id这里的id不明确,因为从on的条件看出a,b表都有id列。
2,关于性能,基本同意楼上Top
3 楼kingtiy(卡卡)回复于 2006-07-03 16:47:54 得分 0
我查询的时候都说查询语句有错,不能执行
我实在是找不到错误在哪里
我还以为是数据量太大了,不能执行
那如果用下面这个查询不知道效率是不是会低点
select id,charge from A where(id in(select * from B))
Top
4 楼kingtiy(卡卡)回复于 2006-07-03 16:50:14 得分 0
1,这条语句有没有问题:
肯定有,至少select id这里的id不明确,因为从on的条件看出a,b表都有id列。
2,关于性能,基本同意楼上
--------------------
这里说明下,B表中的id包含于A表中
这样会出问题吗?
还是会报语法问题Top
5 楼fcuandy(了此残生.)回复于 2006-07-03 16:50:54 得分 0
至于你语句的错误,我上面已经说了。
第二个, where id in(..) 这句,如果你的SELECT的字段列表中只需要表A的字段,那么这种写法不会比连接慢,至少也是差不多。Top
6 楼fcuandy(了此残生.)回复于 2006-07-03 16:52:18 得分 0
你可以
select a.id,charge from a inner join b on a.id=b.id
也可以
select b.id,charge from a inner join b on a.id=b.id
因为你的a.id=b.id是连接条件,所以在选择列表里,取哪个无所谓。Top
7 楼kingtiy(卡卡)回复于 2006-07-03 17:01:15 得分 0
哦,更明白了点
我去做下看了,非常谢谢Top




