小编DVT*_*DVT的帖子

什么是伪合并连接?

这是Microsoft TechNet对Trace Flag 342的解释(重点已添加):

禁用伪合并连接的成本计算,从而显着减少了对某些类型的大型多表连接的解析所花费的时间.也可以使用SET FORCEPLAN ON来禁用伪合并连接的成本计算,因为查询被强制使用FROM子句中指定的顺序.

你们有谁知道什么是伪合并连接?据我所知,SQL Server有3个连接算法(嵌套循环连接,合并连接和散列连接 - 包含位图连接).那么什么是伪合并连接,它与常规合并连接或任何其他连接之间的区别是什么?

t-sql sql-server sql-execution-plan

6
推荐指数
1
解决办法
380
查看次数

SQL:Gaps and Islands,Grouped dates

我试图在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)

sql t-sql sql-server gaps-and-islands

5
推荐指数
1
解决办法
351
查看次数