594
社区成员
发帖
与我相关
我的任务
分享
SELECT CgPlanAdjustGUID ,
CgPlanName
FROM cg_CgPlan a
WHERE ( ( ( ISNULL(a.IsProject, 0) = 0 )
AND a.BUGUID IN (
SELECT DISTINCT
bu.BUGUID
FROM myStationUser su
INNER JOIN myStation s ON su.StationGUID = s.StationGUID
INNER JOIN myBusinessUnit bu ON s.CompanyGUID = bu.BUGUID
WHERE su.UserGUID = 'AD942525-768C-4377-AD61-B7518339DAE8'
AND bu.IsCompany = 1 )
)
OR ( ( ISNULL(a.IsProject, 0) = 1 )
AND ( SELECT COUNT(1)
FROM ( SELECT DISTINCT
t.ProjGUID
FROM myStationObject so
INNER JOIN myStationUser su ON so.StationGUID = su.StationGUID
INNER JOIN vcg_FullProjectTree t ON so.ObjectGUID = t.ObjectGUID
WHERE so.ObjectType = 'project'
AND su.UserGUID = 'AD942525-768C-4377-AD61-B7518339DAE8'
AND t.ApplySys LIKE '%,0220,%'
AND a.ProjectGUIDList LIKE '%'
+ CAST(t.ProjGUID AS VARCHAR(36))
+ '%'
) m
) > 0
)
)
AND ( a.ManagerGUID = 'AD942525-768C-4377-AD61-B7518339DAE8'
OR EXISTS ( SELECT 1
FROM Cg_CgSolutionTeam cgst
INNER JOIN Cg_CgSolutionTeamMember cgstm ON cgst.TeamGUID = cgstm.TeamGUID
INNER JOIN MyUserToOrg d ON cgstm.MemberGUID = d.OrgGuid
INNER JOIN cg_CgSolution c ON cgst.CgSolutionGUID = c.CgSolutionGUID
WHERE c.CgPlanAdjustGUID = a.CgPlanAdjustGUID
AND d.UserGuid = 'AD942525-768C-4377-AD61-B7518339DAE8' )
OR EXISTS ( SELECT 1
FROM cg_ProcDataAuthor cpda
INNER JOIN MyUserToOrg mut ON cpda.AuthorGUID = mut.OrgGuid
WHERE cpda.BUGUID = a.BUGUID
AND mut.UserGuid = 'AD942525-768C-4377-AD61-B7518339DAE8' )
)
IF NOT EXISTS(
SELECT CgPlanAdjustGUID,
CgPlanName
FROM cg_CgPlan a
WHERE a.ManagerGUID = 'AD942525-768C-4377-AD61-B7518339DAE8'
OR EXISTS (
SELECT 1
FROM Cg_CgSolutionTeam cgst
INNER JOIN Cg_CgSolutionTeamMember cgstm
ON cgst.TeamGUID = cgstm.TeamGUID
INNER JOIN MyUserToOrg d
ON cgstm.MemberGUID = d.OrgGuid
INNER JOIN cg_CgSolution c
ON cgst.CgSolutionGUID = c.CgSolutionGUID
WHERE c.CgPlanAdjustGUID = a.CgPlanAdjustGUID
AND d.UserGuid =
'AD942525-768C-4377-AD61-B7518339DAE8'
)
OR EXISTS (
SELECT 1
FROM cg_ProcDataAuthor cpda
INNER JOIN MyUserToOrg mut
ON cpda.AuthorGUID = mut.OrgGuid
WHERE cpda.BUGUID = a.BUGUID
AND mut.UserGuid =
'AD942525-768C-4377-AD61-B7518339DAE8'
)
)
BEGIN
SELECT CgPlanAdjustGUID,
CgPlanName
FROM cg_CgPlan a
WHERE 1=0
END
ELSE
BEGIN
SELECT CgPlanAdjustGUID,
CgPlanName
FROM cg_CgPlan a
WHERE ISNULL(a.IsProject, 0) = 0
AND EXISTS (SELECT 1
FROM myStationUser su
INNER JOIN myStation s
ON su.StationGUID = s.StationGUID
INNER JOIN myBusinessUnit bu
ON s.CompanyGUID = bu.BUGUID
WHERE su.UserGUID = 'AD942525-768C-4377-AD61-B7518339DAE8'
AND bu.IsCompany = 1
AND bu.BUGUID=a.BUGUID
)
UNION ALL
SELECT CgPlanAdjustGUID,
CgPlanName
FROM cg_CgPlan a
WHERE ISNULL(a.IsProject, 0) = 1
AND EXISTS(
SELECT 1
FROM myStationObject so
INNER JOIN myStationUser su
ON so.StationGUID = su.StationGUID
INNER JOIN vcg_FullProjectTree t
ON so.ObjectGUID = t.ObjectGUID
WHERE so.ObjectType = 'project'
AND su.UserGUID =
'AD942525-768C-4377-AD61-B7518339DAE8'
AND t.ApplySys LIKE '%,0220,%'
AND a.ProjectGUIDList LIKE '%'
+ CAST(t.ProjGUID AS VARCHAR(36))
+ '%'
)
END
先看看这个需要多少秒吧?
SELECT a.CgPlanAdjustGUID,
a.CgPlanName
FROM cg_CgPlan a
INNER JOIN (
SELECT DISTINCT
bu.BUGUID
FROM myStationUser su
INNER JOIN myStation s
ON su.StationGUID = s.StationGUID
INNER JOIN myBusinessUnit bu
ON s.CompanyGUID = bu.BUGUID
WHERE su.UserGUID = 'AD942525-768C-4377-AD'
) b
ON a.BUGUID = b.BUGUID
WHERE ISNULL(a.IsProject, 0) = 0
AND (
a.ManagerGUID = 'AD942525-768C-4377-AD61-B7518339DAE8'
OR EXISTS (
SELECT 1
FROM Cg_CgSolutionTeam cgst
INNER JOIN Cg_CgSolutionTeamMember cgstm
ON cgst.TeamGUID = cgstm.TeamGUID
INNER JOIN MyUserToOrg d
ON cgstm.MemberGUID = d.OrgGuid
INNER JOIN cg_CgSolution c
ON cgst.CgSolutionGUID = c.CgSolutionGUID
WHERE c.CgPlanAdjustGUID = a.CgPlanAdjustGUID
AND d.UserGuid =
'AD942525-768C-4377-AD61-B7518339DAE8'
)
OR EXISTS (
SELECT 1
FROM cg_ProcDataAuthor cpda
INNER JOIN MyUserToOrg mut
ON cpda.AuthorGUID = mut.OrgGuid
WHERE cpda.BUGUID = a.BUGUID
AND mut.UserGuid =
'AD942525-768C-4377-AD61-B7518339DAE8'
)
)
union
SELECT a.CgPlanAdjustGUID,
a.CgPlanName
FROM cg_CgPlan a
WHERE ISNULL(a.IsProject, 0) = 1
AND (
SELECT COUNT(1)
FROM (
SELECT DISTINCT
t.ProjGUID
FROM myStationObject so
INNER JOIN myStationUser su
ON so.StationGUID = su.StationGUID
INNER JOIN vcg_FullProjectTree t
ON so.ObjectGUID = t.ObjectGUID
WHERE so.ObjectType = 'project'
AND su.UserGUID =
'AD942525-768C-4377-AD61-B7518339DAE8'
AND t.ApplySys LIKE '%,0220,%'
AND a.ProjectGUIDList LIKE '%'
+ CAST(t.ProjGUID AS VARCHAR(36))
+ '%'
) m
) > 0
AND
(
a.ManagerGUID = 'AD942525-768C-4377-AD61-B7518339DAE8'
OR EXISTS (
SELECT 1
FROM Cg_CgSolutionTeam cgst
INNER JOIN Cg_CgSolutionTeamMember cgstm
ON cgst.TeamGUID = cgstm.TeamGUID
INNER JOIN MyUserToOrg d
ON cgstm.MemberGUID = d.OrgGuid
INNER JOIN cg_CgSolution c
ON cgst.CgSolutionGUID = c.CgSolutionGUID
WHERE c.CgPlanAdjustGUID = a.CgPlanAdjustGUID
AND d.UserGuid =
'AD942525-768C-4377-AD61-B7518339DAE8'
)
OR EXISTS (
SELECT 1
FROM cg_ProcDataAuthor cpda
INNER JOIN MyUserToOrg mut
ON cpda.AuthorGUID = mut.OrgGuid
WHERE cpda.BUGUID = a.BUGUID
AND mut.UserGuid =
'AD942525-768C-4377-AD61-B7518339DAE8'
)
)
这样试试看有没有稍微快点,你这什么都没有,就一堆代码,很难优化的,只能看看你语句上有没有优化的余地。索引和逻辑方面根本没有办法优化。