সর্বাধিক পার্থক্য হ'ল যোগে বনাম উপস্থিত নেই, এটি (লিখিত), এটি SELECT *
।
প্রথম উদাহরণে, আপনি উভয় থেকে সমস্ত কলাম পান A
এবং B
দ্বিতীয় উদাহরণে আপনি কেবল কলামগুলি পান A
।
এসকিউএল সার্ভারে, দ্বিতীয় রূপটি খুব সাধারণ একটি নিয়মিত উদাহরণে কিছুটা দ্রুত:
দুটি নমুনা সারণী তৈরি করুন:
CREATE TABLE dbo.A
(
A_ID INT NOT NULL
PRIMARY KEY CLUSTERED
IDENTITY(1,1)
);
CREATE TABLE dbo.B
(
B_ID INT NOT NULL
PRIMARY KEY CLUSTERED
IDENTITY(1,1)
);
GO
প্রতিটি সারণীতে 10,000 সারি sertোকান:
INSERT INTO dbo.A DEFAULT VALUES;
GO 10000
INSERT INTO dbo.B DEFAULT VALUES;
GO 10000
দ্বিতীয় সারণী থেকে প্রতি 5 তম সারিতে সরান:
DELETE
FROM dbo.B
WHERE B_ID % 5 = 1;
SELECT COUNT(*) -- shows 10,000
FROM dbo.A;
SELECT COUNT(*) -- shows 8,000
FROM dbo.B;
দুটি পরীক্ষার SELECT
বিবৃতি বৈকল্পিকগুলি সম্পাদন করুন :
SELECT *
FROM dbo.A
LEFT JOIN dbo.B ON A.A_ID = B.B_ID
WHERE B.B_ID IS NULL;
SELECT *
FROM dbo.A
WHERE NOT EXISTS (SELECT 1
FROM dbo.B
WHERE b.B_ID = a.A_ID);
কার্যকর করার পরিকল্পনা:
দ্বিতীয় বৈকল্পিকটি ফিল্টার অপারেশন করার প্রয়োজন হয় না কারণ এটি বাম অ্যান্টি-সেমি জয়েন্ট অপারেটরটি ব্যবহার করতে পারে।
WHERE A.idx NOT IN (...)
হয় না অভিন্ন এর trivalent আচরণ কারণেNULL
(যেমনNULL
সমান নয়NULL
, (কিংবা অসম) অতএব যদি আপনি কোনNULL
সালেtableB
আপনি অপ্রত্যাশিত ফলাফল পেতে হবে!)