উভয় কার্যনির্বাহী পরিকল্পনার নীচে প্রশ্নের মধ্যে একটি অনন্য সূচকে 1000 সন্ধানের অনুমান করা হয়।
সিক্স একই উত্স টেবিলের উপর অর্ডারযুক্ত স্ক্যান দ্বারা চালিত হয় যাতে আপাতদৃষ্টিতে একই ক্রমে একই মানগুলি সন্ধান করা উচিত।
উভয় নেস্ট লুপ আছে <NestedLoops Optimized="false" WithOrderedPrefetch="true">
যে কেউ প্রথম পরিকল্পনায় এই কাজটি 0.172434 এ তবে দ্বিতীয়টিতে 3.01702 এ কেন অর্জিত হয় তা যে কেউ জানেন?
(প্রশ্নের কারণ হ'ল প্রথম ক্যোয়ারী আপাতত কম পরিকল্পনা ব্যয়ের কারণে আমাকে অপ্টিমাইজেশন হিসাবে প্রস্তাব করেছিল। এটি আসলে আমার কাছে দেখে মনে হচ্ছে এটি আরও বেশি কাজ করে তবে আমি কেবল তাত্পর্যটি ব্যাখ্যা করার চেষ্টা করছি ... ।)
সেটআপ
CREATE TABLE dbo.Target(KeyCol int PRIMARY KEY, OtherCol char(32) NOT NULL);
CREATE TABLE dbo.Staging(KeyCol int PRIMARY KEY, OtherCol char(32) NOT NULL);
INSERT INTO dbo.Target
SELECT TOP (1000000) ROW_NUMBER() OVER (ORDER BY @@SPID), LEFT(NEWID(),32)
FROM master..spt_values v1,
master..spt_values v2;
INSERT INTO dbo.Staging
SELECT TOP (1000) ROW_NUMBER() OVER (ORDER BY @@SPID), LEFT(NEWID(),32)
FROM master..spt_values v1;
প্রশ্ন 1 "পরিকল্পনাটি আটকান" লিঙ্ক link
WITH T
AS (SELECT *
FROM Target AS T
WHERE T.KeyCol IN (SELECT S.KeyCol
FROM Staging AS S))
MERGE T
USING Staging S
ON ( T.KeyCol = S.KeyCol )
WHEN NOT MATCHED THEN
INSERT ( KeyCol, OtherCol )
VALUES(S.KeyCol, S.OtherCol )
WHEN MATCHED AND T.OtherCol > S.OtherCol THEN
UPDATE SET T.OtherCol = S.OtherCol;
প্রশ্ন 2 "পরিকল্পনাটি আটকান" লিঙ্ক
MERGE Target T
USING Staging S
ON ( T.KeyCol = S.KeyCol )
WHEN NOT MATCHED THEN
INSERT ( KeyCol, OtherCol )
VALUES( S.KeyCol, S.OtherCol )
WHEN MATCHED AND T.OtherCol > S.OtherCol THEN
UPDATE SET T.OtherCol = S.OtherCol;
প্রশ্ন ঘ
প্রশ্ন 2
উপরেরটি এসকিউএল সার্ভার 2014 (এসপি 2) (KB3171021) - 12.0.5000.0 (এক্স 64) এ পরীক্ষা করা হয়েছিল
@ জো ওবিশ মন্তব্যগুলিতে উল্লেখ করেছেন যে সরল তিরস্কার হবে
SELECT *
FROM staging AS S
LEFT OUTER JOIN Target AS T
ON T.KeyCol = S.KeyCol;
বনাম
SELECT *
FROM staging AS S
LEFT OUTER JOIN (SELECT * FROM Target) AS T
ON T.KeyCol = S.KeyCol;
উভয় 1,000 সারি উপস্থাপনকারী টেবিলের জন্য উপরে এখনও উদ্ভূত টেবিল ছাড়া নেস্টেড loops সঙ্গে একই পরিকল্পনা আকৃতি এবং পরিকল্পনা আছে প্রকাশমান সস্তা, কিন্তু একটি 10,000 সারি উপস্থাপনকারী টেবিল এবং খরচ মধ্যে পার্থক্য উপরে হিসাবে একই লক্ষ্য টেবিল পরিকল্পনা পরিবর্তন করে আকৃতির (সম্পূর্ণ স্ক্যান এবং মার্জ ব্যয় করে ব্যয়বহুল কাস্টেড সিক্সের তুলনায় তুলনামূলক বেশি আকর্ষণীয় বলে মনে হচ্ছে) ব্যয়টির এই তাত্পর্য দেখানো কেবল পরিকল্পনাগুলির সাথে তুলনা করা আরও শক্ত করে তোলা ব্যতীত অন্য প্রভাব ফেলতে পারে।