在SQL Server中,当一个表具有大量数据而另一个表具有少量数据时,连接两个表
若我想联接两个表(而不是内部联接),左表有大量数据(数百万条记录),右表几乎并没有记录。我应该选择什么(左或右外部联接)以及为什么。首先,联接独立于表的大小 我认为这取决于你们想要从左表还是右表中得到什么数据,让我们假设你们有两个表,员工有数百万条记录,让我们把它放在右边,部门有10条记录,放在左边,现在每个员工有一个部门 员工在SQL Server中,当一个表具有大量数据而另一个表具有少量数据时,连接两个表,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,若我想联接两个表(而不是内部联接),左表有大量数据(数百万条记录),右表几乎并没有记录。我应该选择什么(左或右外部联接)以及为什么。首先,联接独立于表的大小 我认为这取决于你们想要从左表还是右表中得到什么数据,让我们假设你们有两个表,员工有数百万条记录,让我们把它放在右边,部门有10条记录,放在左边,现在每个员工有一个部门 员工 埃皮德 部门ID 部门 部门ID 部门名称 现在假设您想知道哪个员工属于哪个部门使用此查询 Select e.empId,d.DepartmentName from
- 埃皮德
- 部门ID 部门
- 部门ID
- 部门名称
Select e.empId,d.DepartmentName
from employee e
join department d
on e.departmentid=d.departmentid
现在假设您想知道哪个员工现在分配了任何部门
使用下面的查询
Select e.empId,d.DepartmentName
from employee e
left join department d
on e.departmentid=d.departmentid
where d.departmentid is null
Select d.[Department Name],COUNT(e.empID) from Employee e
left join Department d
on e.DepartmentId=d.DepartmentId
group by d.[Department Name]
现在假设您想知道哪个部门有多少员工使用下面的查询
Select e.empId,d.DepartmentName
from employee e
left join department d
on e.departmentid=d.departmentid
where d.departmentid is null
Select d.[Department Name],COUNT(e.empID) from Employee e
left join Department d
on e.DepartmentId=d.DepartmentId
group by d.[Department Name]
有关联接的更多信息,请使用下图
SQL中连接表的常用方法是使用
join
关键字。这一事实与表的大小无关。谢谢Gordon,这意味着当连接两个表时,大小并不重要。。。不管我是左外线还是右外线。这不会对性能造成任何影响。两个方向的外部联接不会花费相同的时间,因为A中的每一行都必须与BYU中的每一行进行比较。您很少有理由在查询中使用右联接。您需要确定的是哪个表应该是左联接的外部表。无论较大的表位于哪一侧,优化器都会找出最佳匹配方法。