使用Join优化SQL查询
我使用了两个变量,每个变量都有一个使用Join优化SQL查询,sql,sql-server,join,left-join,inner-join,Sql,Sql Server,Join,Left Join,Inner Join,我使用了两个变量,每个变量都有一个SELECT语句 我被告知我可以通过使用JOIN只执行一次查询来优化我的查询 我设法把这句话合为一句。但是它没有使用JOIN,在我当前的查询中仍然有2个SELECT语句 当前查询: BEGIN DECLARE @EntityId int, @Country nvarchar(10), @OrganizationId int, @Username nvarchar(100) = 'user1' Set @OrganizationId = (SELECT BU
SELECT
语句
我被告知我可以通过使用JOIN
只执行一次查询来优化我的查询
我设法把这句话合为一句。但是它没有使用JOIN
,在我当前的查询中仍然有2个SELECT
语句
当前查询:
BEGIN
DECLARE @EntityId int, @Country nvarchar(10), @OrganizationId int,
@Username nvarchar(100) = 'user1'
Set @OrganizationId = (SELECT BU.OrganizationId
FROM [Company].[Config].[BusinessUnit] BU
WHERE BU.EntityId = (SELECT BU.EntityId
FROM [Company].[PES].[EmployeeProfile] EP
LEFT JOIN Config.BusinessUnit bu on EP.EntityCode = BU.EntityCode
WHERE EP.Username = @Username))
IF(@OrganizationId = 3)
SET @Country = 'MS'
ELSE
SET @Country = 'SG'
SELECT @Country
END
我当前的查询是否可以继续,或者是否可以进一步改进?多谢各位
上次查询:
为什么不把它合并成一个查询呢
SELECT @Country = (CASE WHEN @OrganizationId = 3 THEN 'MS'
ELSE 'SG'
END)
FROM [Company].[PES].[EmployeeProfile] EP JOIN
Config.BusinessUnit cbu
ON EP.EntityCode = cbu.EntityCode JOIN
[Company].[PES].[BusinessUnit] BU
ON cbu.EntityId = bu.EntityId
WHERE EP.Username = @Username)
为什么不把它合并成一个查询呢
SELECT @Country = (CASE WHEN @OrganizationId = 3 THEN 'MS'
ELSE 'SG'
END)
FROM [Company].[PES].[EmployeeProfile] EP JOIN
Config.BusinessUnit cbu
ON EP.EntityCode = cbu.EntityCode JOIN
[Company].[PES].[BusinessUnit] BU
ON cbu.EntityId = bu.EntityId
WHERE EP.Username = @Username)
你能解释一下逻辑应该做什么吗?样本数据和期望的结果有帮助。另外,您的代码看起来像SQL Server,而不是MySQL。这会影响优化。你能解释一下逻辑应该做什么吗?样本数据和期望的结果有帮助。另外,您的代码看起来像SQL Server,而不是MySQL。这会影响优化。