This is shocking for me, I've run both queries several times and using the view is at least twice faster. Am I missing something?
This is the code I used to compare.
Note: The code to query from the original tables is the code used by the view.
DECLARE@tHCPCstable(
hcpcvarchar(5),
daysint,
yearsint)
INSERT INTO @tHCPCs
SELECT 'A4310', 90,0 UNION ALL
SELECT 'A4311', 90,0 UNION ALL
SELECT 'A4314', 90,0 UNION ALL
SELECT 'A4320', 90,0 UNION ALL
SELECT 'A4322', 90,0
DECLARE @Start_Datedatetime
SET @start_Date = GETDATE()
SELECT Claims.BILAMT_CT,
Claims.CUSTNUM_CT,
Claims.INSNUN_CT,
Claims.INVNUM_CT,
Claims.LNNUM_CT,
Claims.PROCDE_CT,
Claims.STDOS_CT
INTO ##Test1
FROM(
SELECT
c.bilamtBILAMT_CT,
c.cusnoCUSTNUM_CT,
c.insnoINSNUN_CT,
CONVERT(int, c.invno)INVNUM_CT,
c.lnenoLNNUM_CT,
c.procdePROCDE_CT,
CASE WHEN ISDATE(c.stdos) = 1
THEN CONVERT(datetime,cast(c.stdos as char(8)),112)
ELSE '1/1/1800' ENDSTDOS_CT
FROM AR_LOAD_DATA.dbo.clmtrk c
WHEREc.insno IN ('MCA', 'MCB', 'MCC', 'MCD', 'MC1', 'MC2', 'MC3', 'MC4')
UNION ALL
SELECT
h.bilamtBILAMT_CT,
h.cusnoCUSTNUM_CT,
h.insnoINSNUN_CT,
CONVERT(int, h.invno)INVNUM_CT,
h.lnenoLNNUM_CT,
h.procdePROCDE_CT,
CASE WHEN ISDATE(h.stdos) = 1
THEN CONVERT(datetime,cast(h.stdos as char(8)),112)
ELSE '1/1/1800' ENDSTDOS_CT
FROMAR_LOAD_DATA.dbo.cltrkH h
WHEREh.insno IN ('MCA', 'MCB', 'MCC', 'MCD', 'MC1', 'MC2', 'MC3', 'MC4')) Claims
JOIN@tHCPCs HCPCs ON Claims.PROCDE_CT = HCPCs.HCPC
SELECT DATEDIFF( ms, @Start_Date, GETDATE())
USE OtherDatabase
SET @start_Date = GETDATE()
SELECTc.CUSTNUM_CT,
c.INVNUM_CT,
c.PROCDE_CT,
c.LNNUM_CT,
c.INSNUN_CT,
c.STDOS_CT,
c.BILAMT_CT
INTO ##Test2
FROMdbo.vuClaimTrackAll c
JOIN@tHCPCs t ON c.PROCDE_CT = t.hcpc
WHEREc.INSNUN_CT IN ('MCA', 'MCB', 'MCC', 'MCD', 'MC1', 'MC2', 'MC3', 'MC4')
SELECT DATEDIFF( ms, @Start_Date, GETDATE())
DROP TABLE ##Test1
DROP TABLE ##Test2