这是Microsoft TechNet对Trace Flag 342的解释(重点已添加):
禁用伪合并连接的成本计算,从而显着减少了对某些类型的大型多表连接的解析所花费的时间.也可以使用SET FORCEPLAN ON来禁用伪合并连接的成本计算,因为查询被强制使用FROM子句中指定的顺序.
你们有谁知道什么是伪合并连接?据我所知,SQL Server有3个连接算法(嵌套循环连接,合并连接和散列连接 - 包含位图连接).那么什么是伪合并连接,它与常规合并连接或任何其他连接之间的区别是什么?
我试图在3天之内将日期分组,并在30天内根据再入院分配点数.MRN每次重新接纳将获得3分.任何有关修改我的查询的帮助都会很棒.
例:
CREATE TABLE #z (
ID INT IDENTITY(1,1),
OrganizationMrn INT,
VisitDate DATE,
CATEGORY VARCHAR(15) )
INSERT #z(OrganizationMrn, VisitDate, CATEGORY)
VALUES
(1, '1/2/2016','Inpatient'),
(1, '1/5/2016','Inpatient'),
(1, '1/7/2016','Inpatient'),
(1, '1/8/2016','Inpatient'),
(1, '1/9/2016','Inpatient'),
(1, '2/4/2016','Inpatient'),
(1, '6/2/2016','Inpatient'),
(1, '6/3/2016','Inpatient'),
(1, '6/5/2016','Inpatient'),
(1, '6/6/2016','Inpatient'),
(1, '6/8/2016','Inpatient'),
(1, '7/1/2016','Inpatient'),
(1, '8/1/2016','Inpatient'),
(1, '8/4/2016','Inpatient'),
(1, '8/15/2016','Inpatient'),
(1, '8/18/2016','Inpatient'),
(1, '8/28/2016','Inpatient'),
(1, '10/12/2016','Inpatient'),
(1, '10/15/2016','Inpatient'),
(1, '11/17/2016','Inpatient'),
(1, '12/20/2016','Inpatient')
Run Code Online (Sandbox Code Playgroud)
期望的输出:我真的只需要实际访问,OrganizationMrn和Points.(当日期分组(实际访问)时,第一个日期应在30天内用于再入院).
ACTUAL Visits Grouped Dates Re-admissions Points
1/2/2016 (grouped 1/2, 1/5)
1/7/2016 (grouped 1/7, 1/8, 1/9) …Run Code Online (Sandbox Code Playgroud)