আমি দুটি কলাম সমান হয় তার উপর ভিত্তি করে একটি দ্রুত অনুসন্ধান করতে চাই। আমি একটি সূচক সহ একটি গণিত কলাম ব্যবহার করার চেষ্টা করেছি, তবে এসকিউএল সার্ভার এটি ব্যবহার করে বলে মনে হচ্ছে না। আমি যদি কেবল একটি সূচি সহ স্থিতিশীল জনবহুল বিট কলামটি ব্যবহার করি তবে আমি প্রত্যাশিত সূচকটি সন্ধান করি।
দেখে মনে হচ্ছে এখানে এর মতো আরও কিছু প্রশ্ন রয়েছে, তবে কেন কোনও সূচক ব্যবহার করা হবে না সেদিকে কোনও দৃষ্টি নিবদ্ধ করা হয়নি।
পরীক্ষার সারণী:
CREATE TABLE dbo.Diffs
(
Id int NOT NULL IDENTITY (1, 1),
DataA int NULL,
DataB int NULL,
DiffPersisted AS isnull(convert(bit, case when [DataA] is null and [DataB] is not null then 1 when [DataA] <> [DataB] then 1 else 0 end), 0) PERSISTED ,
DiffComp AS isnull(convert(bit, case when [DataA] is null and [DataB] is not null then 1 when [DataA] <> [DataB] then 1 else 0 end), 0),
DiffStatic bit not null,
Primary Key (Id)
)
create index ix_DiffPersisted on Diffs (DiffPersisted)
create index ix_DiffComp on Diffs (DiffComp)
create index ix_DiffStatic on Diffs (DiffStatic)
এবং প্রশ্ন:
select Id from Diffs where DiffPersisted = 1
select Id from Diffs where DiffComp = 1
select Id from Diffs where DiffStatic = 1
COALESCE
যদিও এই মুহুর্তে মুক্তি পেতে পারেন ; আমি বিশ্বাস করি যেCASE
বিবৃতিটি ইতিমধ্যে ফিরে আসার গ্যারান্টিযুক্ত ছিল0
বা1
তবেISNULL
এটি উপস্থিত ছিল সুতরাং এসকিউএল সার্ভারBIT
গণিত কলামের জন্য একটি অ-কার্যকর করতে পারে । যাইহোক,COALESCE
এখনও একটি কলাম কলাম উপার্জন করবে। সুতরাং বা ছাড়াই এই পরিবর্তনের এক প্রভাবটিCOALESCE
হ'ল গণনা কলামটি এখন naclaable তবে সূচী সন্ধানটি ব্যবহার করা যেতে পারে।