আমি নীচে ফিল্টারড সূচক তৈরি করেছি যখন আমি 2 টি ক্যুরিয়াকে আরও নিচে চালিয়ে যাই যখন এই সূচকটি কেবল প্রথম দৃষ্টান্তের জন্য অনুসন্ধানের জন্য ব্যবহার করা হবে যেখানে জোনটিতে অধিবেশনটির পরিবর্তে জোনটিতে END_DTTM রয়েছে (প্রশ্নগুলির মধ্যে এটিই পার্থক্য) । কেন এমন হয় তা কেউ ব্যাখ্যা করতে পারেন?
সূচক তৈরি
CREATE NONCLUSTERED INDEX [ix_PATIENT_LIST_BESPOKE_LIST_ID_includes] ON [dbo].[PATIENT_LIST_BESPOKE]
(
[LIST_ID] ASC,
[END_DTTM] ASC
)
WHERE ([END_DTTM] IS NULL)
ক্যোয়ারী
DECLARE @LIST_ID INT = 3655
--This one seeks on the index
SELECT
PATIENT_LISTS.LIST_ID
FROM
DBO.PATIENT_LISTS
LEFT JOIN DBO.PATIENT_LIST_BESPOKE ON PATIENT_LISTS.LIST_ID = PATIENT_LIST_BESPOKE.LIST_ID
AND PATIENT_LIST_BESPOKE.END_DTTM IS NULL
WHERE
PATIENT_LISTS.LIST_ID = @LIST_ID
--This one scans on the index
SELECT
PATIENT_LISTS.LIST_ID
FROM
DBO.PATIENT_LISTS
LEFT JOIN DBO.PATIENT_LIST_BESPOKE ON PATIENT_LISTS.LIST_ID = PATIENT_LIST_BESPOKE.LIST_ID
WHERE
PATIENT_LISTS.LIST_ID = @LIST_ID AND
PATIENT_LIST_BESPOKE.END_DTTM IS NULL