/ / Prečo sql server robí skenovanie pri pripojení, keď v zdrojovej tabuľke nie sú žiadne záznamy - sql-server, tsql

Prečo sql server robí skenovanie pri pripojení, keď v zdrojovej tabuľke nie sú žiadne záznamy - sql-server, tsql

Myšlienkou nasledujúceho dotazu je použiť CTE na získanie primárneho kľúča všetkých riadkov v [Archív]. [Tia_tia_object], ktorý spĺňa filter.

Čas vykonania pre dopyt v CTE je 0 sekúnd.

Druhá časť sa má spájať s ostatnýmitabuľky, aby sa niektoré údaje viac filtrovali, ale iba ak sú v CTE vrátené nejaké riadky. To bol jediný spôsob, ako môžem dostať server SQL použiť správne indexy.

Prečo trávi čas (pozri plán spúšťania) v TIA_TIA_AGREEMENT_LINE a TIA_TIA_OBJECT, keď CTE vráti 0 riadkov?

WITH cte_vehicle
AS (SELECT O.[Seq_no],
O.Object_No
FROM   [Archive].[tia_tia_object] O
WHERE  O.RECORD_TIMESTAMP >
(SELECT LastLoadTimeStamp FROM staging.Ufngetlastloadtimestamp("Staging.CoveredObject"))
AND O.[Meta_iscurrent] = 1
AND O.OBJECT_TYPE IN ( "BIO01", "CAO01", "DKV", "GFO01",
"KMA", "KNO01", "MCO01", "VEO01",
"SVO01", "AUO01" ))
SELECT O.[Seq_no]                      AS [Bkey_CoveredObject],
Cast(O.[Agr_Line_No] AS BIGINT) AS [Agr_Line_No],
O.[Cover_Start_Date]            AS [CoverageFrom],
O.[Cover_End_Date]              AS [CoverageTo],
O.[Timestamp]                   AS [TIMESTAMP],
O.[Record_Timestamp]            AS [RECORD_TIMESTAMP],
O.[Newest]                      AS [Newest],
O.LOCATION_ID                   AS LocationNo,
O.[Cust_no],
O.[N01]
FROM   cte_vehicle AS T
INNER JOIN [Archive].[tia_tia_object] O
ON t.Object_No = O.Object_No
AND t.Seq_No = O.Seq_No
INNER JOIN [Archive].[tia_tia_agreement_line] AL
ON O.Agr_line_no = AL.Agr_line_no
INNER JOIN [Archive].[tia_tia_policy] P
ON AL.Policy_no = P.Policy_no
WHERE  P.[Transaction_type] <> "D"

Plán realizácie:

tu zadajte popis obrázku

odpovede:

0 pre odpoveď č. 1

Pretože je stále potrebné skontrolovať a hľadať záznamy. Dokonca aj v prípade, že v tabuľke nie sú žiadne záznamy, nevie to, kým skutočne nekontroluje.

Podobne ako keby vám niekto dal zapečatenú krabicu, neviete, či je prázdna alebo nie, až ju otvoríte.