再问个问题,SQL

kingtiy 2006-07-03 04:38:35
A表
id,name,charge
B表
id

select id,charge from A inner join B on A.id=B.id
这个查询语句有问题吗?
如果A,B表中都有很多数据,查询会不会很耗时间?
如果是这样,那有什么方法改进吗?
...全文
83 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingtiy 2006-07-03
  • 打赏
  • 举报
回复
哦,更明白了点
我去做下看了,非常谢谢
fcuandy 2006-07-03
  • 打赏
  • 举报
回复
你可以
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是连接条件,所以在选择列表里,取哪个无所谓。
fcuandy 2006-07-03
  • 打赏
  • 举报
回复
至于你语句的错误,我上面已经说了。
第二个, where id in(..) 这句,如果你的SELECT的字段列表中只需要表A的字段,那么这种写法不会比连接慢,至少也是差不多。
kingtiy 2006-07-03
  • 打赏
  • 举报
回复
1,这条语句有没有问题:
肯定有,至少select id这里的id不明确,因为从on的条件看出a,b表都有id列。
2,关于性能,基本同意楼上


--------------------
这里说明下,B表中的id包含于A表中
这样会出问题吗?
还是会报语法问题
kingtiy 2006-07-03
  • 打赏
  • 举报
回复
我查询的时候都说查询语句有错,不能执行
我实在是找不到错误在哪里
我还以为是数据量太大了,不能执行

那如果用下面这个查询不知道效率是不是会低点
select id,charge from A where(id in(select * from B))
fcuandy 2006-07-03
  • 打赏
  • 举报
回复
1,这条语句有没有问题:
肯定有,至少select id这里的id不明确,因为从on的条件看出a,b表都有id列。
2,关于性能,基本同意楼上
LouisXIV 2006-07-03
  • 打赏
  • 举报
回复
这个基本已经是最优方案了,如果速度还是有问题,检测你的硬件环境或者索性用其他数据库吧

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧