আমার এক বিকাশকারী যুক্তি দিচ্ছেন যা COALESCE(column, default value) = default value
এখন ব্যস্ত। এটা কি সঠিক?
আমি নিম্নলিখিত পরীক্ষা COALESCE
চালিয়েছি , এবং মনে করি এটি বোঝায় যে এটি অ-সরগেযোগ্য।
USE tempdb;
SELECT @@VERSION;
-- Microsoft SQL Server 2016 (RTM-CU3-GDR) (KB3194717) - 13.0.2186.6 (X64) Oct 31 2016 18:27:32 Copyright (c) Microsoft Corporation Developer Edition (64-bit) on Windows 10 Pro 6.3 <X64> (Build 14393: ) (Hypervisor)
CREATE TABLE Test
(
ID int primary key clustered,
Mod6 int null,
INDEX IX_Mod6 NONCLUSTERED (Mod6)
);
INSERT INTO Test (ID, Mod6)
SELECT object_id as ID, case when name like '%k%' then null else object_id % 6 end as Mod6
FROM sys.objects;
SELECT Mod6
FROM Test WITH (INDEX = IX_Mod6, FORCESEEK)
where Mod6 is null or Mod6 = 0;
-- Plan shows expected seek
SELECT Mod6
FROM Test WITH (INDEX = IX_Mod6, FORCESEEK)
WHERE COALESCE(Mod6, 0) = 0;
-- Error:
-- Msg 8622, Level 16, State 1, Line 20
-- Query processor could not produce a query plan because of the hints
-- defined in this query. Resubmit the query without specifying any hints
-- and without using SET FORCEPLAN.
5
আপনার বিকাশকারী কোনও প্রমাণ দিয়ে তর্ক করেছেন?
—
অ্যারন বারট্র্যান্ড
আমি এই পোস্টটি পড়েছি: josef-richberg.squarespace.com/j Journal / 2010/ 1 / 28/… আমি মনে করি না যে এই পোস্টের উত্তর দেওয়ার জন্য কোনও ਠ answer় উত্তর নেওয়া যেতে পারে। (তবে সম্ভবত অন্য কেউ জানেন))
—
আরএলএফ
@ আরএলএফ - এই নিবন্ধটি এমন কিছু বলবে না যা ইঙ্গিত দেয় যে এটি ব্যয়বহুল। এটি ব্যঙ্গাত্মক হওয়ার কোনও প্রদর্শন নয়। twitpic.com/107ms0 । অ-সরগাব্যতা হ'ল এটি
—
মার্টিন স্মিথ
CASE
অভিব্যক্তিতে ব্যবহৃত কলামগুলিকে সন্ধান করতে বাধা দেয় - এমন নয় যে অভিব্যক্তির ফলাফলটি তখন অন্য কিছু অনুসন্ধান করতে ব্যবহার করা যায় না।
@ অ্যারোনবার্ট্র্যান্ড, "আমি যেভাবে লিখি তা কার্যকর করার পরিকল্পনাটি একই রকম দেখায়" - তিনি এই বিষয়টিকে এড়িয়ে গেছেন যে
—
মিচ
COALESCE
ডি কলামের উপর ভিত্তি করে দু'জনেই কোনও অনুসন্ধান করা হচ্ছে না ।
ওহ আমি প্রশ্ন জিজ্ঞাসা করার জন্য আপনাকে দোষ দিচ্ছি না, বিশেষত যেহেতু আপনি প্রথমে এটি অস্বীকার করার চেষ্টা করেছিলেন। আমি কেবল পরামর্শ দিচ্ছিলাম যে সম্ভবত আপনার বিকাশকারীও এটি করতে শিখুক।
—
অ্যারন বারট্র্যান্ড