ইউনিয়ন এবং ইউনিয়ন সবের মধ্যে পার্থক্য কী?


উত্তর:


1734

UNIONসদৃশ রেকর্ডগুলি সরিয়ে দেয় (যেখানে ফলাফলগুলির সমস্ত কলাম একই হয়), UNION ALLনা।

UNIONপরিবর্তে ব্যবহার করার সময় একটি পারফরম্যান্স হিট হয় UNION ALL, যেহেতু ডুপ্লিকেট সারিগুলি মুছে ফেলার জন্য ডাটাবেস সার্ভারকে অতিরিক্ত কাজ করা আবশ্যক, তবে সাধারণত আপনি নকলগুলি চান না (বিশেষত প্রতিবেদনের বিকাশকালে)।

ইউনিয়নের উদাহরণ:

SELECT 'foo' AS bar UNION SELECT 'foo' AS bar

ফলাফল:

+-----+
| bar |
+-----+
| foo |
+-----+
1 row in set (0.00 sec)

ইউনিয়ন সব উদাহরণ:

SELECT 'foo' AS bar UNION ALL SELECT 'foo' AS bar

ফলাফল:

+-----+
| bar |
+-----+
| foo |
| foo |
+-----+
2 rows in set (0.00 sec)

179
এর অর্থ এই যে ইউনিয়নটি খুব কম পারফরম্যান্সযুক্ত কারণ ডুপ্লিকেটগুলির জন্য ফলাফলটি স্ক্যান করতে হবে
ম্যাথু ওয়াটসন

19
ইউনিয়ন সমস্ত প্রকৃতপক্ষে আরও পারফরম্যান্ট হবে, বিশেষত স্বতন্ত্র ধরণের অভাবের কারণে। আমার সাধারণ অনুশীলনটি হ'ল ইউনিয়ন সমস্ত ব্যবহার করা যদি না আমি বিশেষভাবে সদৃশ চাই।
অ্যাডাম ক্যাভিনিস

6
কেবলমাত্র এখানে লক্ষ্য করা গেছে যে এখানে অনেক ভাল মন্তব্য / উত্তর রয়েছে, তাই আমি উইকির পতাকাটি চালু করেছি এবং সম্পাদনা সম্পর্কে একটি নোট যুক্ত করেছি ...
জিম হার্ট

250
ইউনাইটেড সমস্ত বাস্তব ইউনিয়নের চেয়ে ধীর হতে পারে যেখানে ইন্টারনেট, যেমন নেটওয়ার্ক, একটি বিঘ্ন। অনেকগুলি সদৃশ সারি স্থানান্তর করার ব্যয়টি ক্যোয়ারি এক্সিকিউশন সময় সুবিধাটি ছাড়িয়ে যেতে পারে। কেস-কেস-কেস ভিত্তিতে এটি বিশ্লেষণ করতে হবে।
চার্লস বার্নস

23
@ অ্যাডামকাভিনিস আপনার মন্তব্যটি মোটেই অর্থপূর্ণ নয়।
kojow7

285

উভয় ইউনিয়ন এবং ইউনিয়ন দুটি পৃথক পৃথক এসকিউএল এর ফলাফলকে একত্রিত করে। তারা নকলগুলি হ্যান্ডেল করার ক্ষেত্রে পৃথক।

  • ইউনিয়ন ফলাফল নকল করে কোনও নকল সারি বাদ দিয়ে একটি DISTINCT সম্পাদন করে।

  • ইউনিয়ন সবগুলিই সদৃশগুলি সরিয়ে দেয় না এবং এটি ইউএনআইএন এর চেয়ে দ্রুত।

দ্রষ্টব্য: এই কমান্ডগুলি ব্যবহার করার সময় সমস্ত নির্বাচিত কলামগুলি একই ডেটা ধরণের হওয়া দরকার।

উদাহরণ: আমাদের দুটি টেবিল থাকলে, 1) কর্মচারী এবং 2) গ্রাহক

  1. কর্মচারী সারণী ডেটা:

এখানে চিত্র বর্ণনা লিখুন

  1. গ্রাহক সারণী ডেটা:

এখানে চিত্র বর্ণনা লিখুন

  1. ইউনিয়নের উদাহরণ (এটি সমস্ত সদৃশ রেকর্ড সরিয়ে দেয়):

এখানে চিত্র বর্ণনা লিখুন

  1. ইউনিয়ন সমস্ত উদাহরণ (এটি কেবল রেকর্ডকে একত্রিত করে, সদৃশগুলি সরিয়ে দেয় না, সুতরাং এটি ইউনিয়নের তুলনায় দ্রুত):

এখানে চিত্র বর্ণনা লিখুন


3
"সমস্ত নির্বাচিত কলামগুলি একই ডেটা ধরণের হওয়া দরকার" - আসলে জিনিসগুলি তেমন কঠোর নয় (একটি সম্পর্কিত মডেল দেখার দিক থেকে ভাল জিনিস নয়)। এসকিউএল স্ট্যান্ডার্ড বলছে নাম বাদে তাদের নিজ নিজ কলামের বর্ণনাকারী একই হতে হবে।
onedaywhen

47

UNIONসদৃশ অপসারণ, যেখানে UNION ALLনা।

সরানোর জন্য সদৃশ ফলাফল সেট সাজানো করা আবশ্যক, এবং এই ইন পারে ইউনিয়নের কর্মক্ষমতার উপর প্রভাব ফেলতে, ডাটা ভলিউম উপর নির্ভর করে সাজানো হচ্ছে, এবং (ওরাকল জন্য বিভিন্ন RDBMS পরামিতি সেটিংস PGA_AGGREGATE_TARGETসঙ্গে WORKAREA_SIZE_POLICY=AUTOবা SORT_AREA_SIZEএবং SOR_AREA_RETAINED_SIZEযদি WORKAREA_SIZE_POLICY=MANUAL)।

মূলত, বাছাইটি দ্রুত হয় যদি এটি মেমরিতে চালিত করা যায় তবে তথ্যের পরিমাণ সম্পর্কে একই সতর্কতা প্রযোজ্য।

অবশ্যই, যদি আপনার ডুপ্লিকেট ছাড়াই ফিরিয়ে নেওয়া ডেটার প্রয়োজন হয় তবে আপনার ডেটা উত্সের উপর নির্ভর করে আপনাকে অবশ্যই ইউনিয়ন ব্যবহার করতে হবে

আমি "অনেক কম পারফরম্যান্ট" মন্তব্যটির যোগ্যতা অর্জনের জন্য প্রথম পোস্টে মন্তব্য করব, তবে এটি করার জন্য পর্যাপ্ত খ্যাতি (পয়েন্ট) নেই have


1
"ডুপ্লিকেটগুলি অপসারণ করতে হলে ফলাফল সেটটি অবশ্যই বাছাই করতে হবে" - সম্ভবত আপনার মনে কোনও নির্দিষ্ট বিক্রেতার কথা রয়েছে তবে প্রশ্নটিতে কোনও বিক্রেতা-নির্দিষ্ট ট্যাগ নেই। সেখানে থাকলেও, আপনি প্রমাণ করতে পারবেন যে ডুপ্লিকেটগুলি বাছাই না করে মুছে ফেলা যায় না?
onedaywhen

2
স্বতন্ত্র ফলাফলগুলিকে "স্পষ্টতই" বাছাই করবে, কারণ নকলগুলি সরানো একটি সেটে আরও দ্রুত on এর অর্থ এই নয় যে ফিরে আসা ফলাফলটি আসলে সেইভাবে সাজানো হয় তবে বেশিরভাগ ক্ষেত্রে স্বতন্ত্র (এবং সেইজন্য, ইউনিয়ন) অভ্যন্তরীণভাবে ফলাফলের সেটকে সাজিয়ে তোলে।
ডেভিলসুইচিরো

30

ORACLE এ: ইউনিয়ন BLOB (বা সিএলওবি) কলামের ধরণগুলিকে সমর্থন করে না, ইউনিয়ন সবই করে।


21

ইউনিয়ন এবং ইউনিয়ন সবের মধ্যে মূল পার্থক্য ইউনিয়ন অপারেশন ফলাফল সেট থেকে নকল সারিগুলি সরিয়ে দেয় তবে ইউনিয়ন সমস্ত যোগদানের পরে সমস্ত সারি প্রদান করে।

http://zengin.wordpress.com/2007/07/31/union-vs-union-all/ থেকে


13

আপনি সদৃশগুলি এড়াতে পারেন এবং এখনও এই জাতীয় ক্যোয়ারী চালিয়ে ইউনিয়ন ডায়াস্টিন্ট (যা আসলে ইউনিয়ন হিসাবে একই) এর চেয়ে অনেক বেশি দ্রুত চালাতে পারেন:

SELECT * FROM mytable WHERE a=X UNION ALL SELECT * FROM mytable WHERE b=Y AND a!=X

AND a!=Xঅংশটি লক্ষ্য করুন । এটি ইউএনআইএন এর পরে অনেক দ্রুত।


4
এটি সারিগুলি বাদ দেবে এবং ফলস্বরূপ যদি এর মধ্যে NULL মান থাকে তবে প্রত্যাশিত ফলাফলটি ব্যর্থ করবে। এছাড়াও, এটি এখনও হিসাবে একই ফলাফলটি ফেরত দেয় না UNION- UNIONসাবকিউরিয়াসমূহ দ্বারা প্রত্যাবর্তিত ডুপ্লিকেটগুলিও সরিয়ে দেয়, যেখানে আপনার দৃষ্টিভঙ্গি গ্রহণ করবে না।
ফ্র্যাঙ্ক স্মিট

@ ফ্র্যাঙ্কসিমিট - এই উত্তরের জন্য ধন্যবাদ; সাবকিউরিয়াস সম্পর্কে এই বিটটি ঠিক আমি জানতে চেয়েছিলাম!
দুরাদাস

11

কেবল এখানে আমার আলোচনার জন্য দুটি সেন্ট যুক্ত করতে: একজন UNIONঅপারেটরকে খাঁটি, সেট-ভিত্তিক ইউনিয়ন হিসাবে বুঝতে পারে - যেমন A = ​​{2,4,6,8 set সেট করুন, বি = {1,2,3,4 সেট করুন }, একটি ইউনিয়ন বি = {1,2,3,4,6,8}

সেটগুলির সাথে কাজ করার সময়, আপনি 2 এবং 4 নম্বরটি দু'বার প্রদর্শিত হতে চাইবেন না, কারণ কোনও উপাদানটি সেটে রয়েছে বা নেই

এসকিউএল-এর বিশ্বে, আপনি দুটি সেট থেকে সমস্ত উপাদান একসাথে একটি "ব্যাগ" {2,4,6,8,1,2,3,4 see এ দেখতে চাইতে পারেন} এবং এই উদ্দেশ্যে টি-এসকিউএল অপারেটরটি সরবরাহ করে UNION ALL


2
নিতপিক: UNION ALLটি এসকিউএল দ্বারা "প্রস্তাবিত" নয়। UNION ALLএএনএসআই এসকিউএল স্ট্যান্ডার্ডের একটি অংশ এবং এমএস এসকিউএল সার্ভারের সাথে সুনির্দিষ্ট নয়।
ফ্রাঙ্ক স্মিট

1
'নিতপিক' মন্তব্যটি বোঝাতে পারে যে আপনি টিএসকিউএলে "ইউনিয়ন অল" ব্যবহার করতে পারবেন না, তবে আপনি এটি করতে পারেন। অবশ্যই, মন্তব্য নেই বলে , কিন্তু কেউ এটা পড়া এটা আবিষ্কার করতে পারে।
জোসেফডোগি

10

ইউনিয়ন
দ্য UNIONকমান্ড অনেক মত, দুই টেবিল থেকে সম্পর্কিত তথ্য নির্বাচন করতে ব্যবহার করা হয় JOINকমান্ড। তবে, UNIONকমান্ডটি ব্যবহার করার সময় সমস্ত নির্বাচিত কলামগুলি একই ডেটা ধরণের হওয়া দরকার। এর সাথে UNION, শুধুমাত্র স্বতন্ত্র মানগুলি নির্বাচন করা হয়।

ইউনিয়ন
দ্য UNION ALLকমান্ড সমান UNIONযে ব্যতীত কমান্ড UNION ALLনির্বাচন সব মান।

Unionএবং এর মধ্যে পার্থক্যটি Union allহ'ল Union allসদৃশ সারিগুলি মুছে ফেলবে না, পরিবর্তে এটি কেবল আপনার ক্যোয়ারী নির্দিষ্টকরণের সাথে মানিয়ে সমস্ত সারণী থেকে সমস্ত সারি টানবে এবং এগুলি একটি টেবিলের সাথে সংযুক্ত করে।

একটি UNIONবিবৃতি কার্যকরভাবে SELECT DISTINCTফলাফল সেট উপর একটি করে। যদি আপনি জানেন যে সমস্ত রেকর্ড ফিরিয়ে দেওয়া আপনার ইউনিয়ন থেকে স্বতন্ত্র, UNION ALLপরিবর্তে ব্যবহার করুন, এটি দ্রুত ফলাফল দেয়।


8

কোন ডেটাবেস এটি গুরুত্বপূর্ণ তা নিশ্চিত নয়

UNIONএবং UNION ALLসমস্ত এসকিউএল সার্ভারে কাজ করা উচিত।

আপনার অপ্রয়োজনীয় এড়ানো উচিত UNIONতারা দুর্দান্ত পারফরম্যান্স ফাঁস। থাম্ব ব্যবহারের নিয়ম হিসাবে UNION ALLযদি আপনি নিশ্চিত না হন তবে কোনটি ব্যবহার করবেন।


এই প্রশ্নে কোনও এসকিউএল সার্ভার ট্যাগ নেই। আমি মনে করি যে বিকল্পটি ডুপ্লিকেটগুলি ফেরত দেয় কেবল এটি স্বাভাবিকভাবে সম্পাদন করার কারণে ভুল পরামর্শ।
onedaywhen

1
@ অধিবেল যখন আমি অনুমান করি যে ওপি সমস্ত আরডিবিএমএস (যেমন মাইএসকিউএল, পোস্টগ্রিসকিউএল, ওরাকল, এসকিউএল সার্ভার) এর প্রতিশব্দ হিসাবে "এসকিউএল সার্ভারস" ব্যবহার করে। শব্দটি দুর্ভাগ্যজনক, যদিও (এবং অবশ্যই আমি ভুল হতে পারি)।
ফ্রাঙ্ক স্মিট

@ ফ্র্যাঙ্কশ্মিট: আপনার তালিকাভুক্ত পণ্যগুলির
কোনওটিই

1
@মনেদয় কখন বিস্তৃতভাবে যত্নশীল? কমপক্ষে এন.ইউইকিপিডিয়া.org / উইকি / রিলেশনাল_ড্যাটাবেস_ম্যানেজমেন্ট_সিস্টেমটি আমার সাথে একমত বলে মনে হচ্ছে - এতে মাইক্রোসফ্ট এসকিউএল সার্ভার, ওরাকল ডাটাবেস এবং মাইএসকিউএল স্পষ্টভাবে উল্লেখ করা হয়েছে। অথবা আপনি ওরাকল এবং ওরাকল ডেটাবেস যেমন পার্থক্য সম্পর্কে নীটপিকি?
ফ্রাঙ্ক শিমিট

8

ইউনিয়ন - স্বতন্ত্র রেকর্ডে ফলাফল

যখন

ইউনিয়ন সব - ডুপ্লিকেট সহ সমস্ত রেকর্ডে ফলাফল।

দু'জনেই অপারেটরগুলি ব্লক করা হচ্ছে এবং তাই আমি ব্যক্তিগতভাবে যেকোনো সময় ব্লকিং অপারেটরগুলির (জোড় ইউনিয়ন, ইন্টারসেকট, ইউনিয়ন সমস্ত ইত্যাদি) ব্যবহার করতে পছন্দ করি।

ইউনিয়ন সমস্ত চেকআউট নিম্নলিখিত উদাহরণের তুলনায় ইউনিয়ন অপারেশন কেন খারাপভাবে সম্পাদন করে তা চিত্রিত করার জন্য।

CREATE TABLE #T1 (data VARCHAR(10))

INSERT INTO #T1
SELECT 'abc'
UNION ALL
SELECT 'bcd'
UNION ALL
SELECT 'cde'
UNION ALL
SELECT 'def'
UNION ALL
SELECT 'efg'


CREATE TABLE #T2 (data VARCHAR(10))

INSERT INTO #T2
SELECT 'abc'
UNION ALL
SELECT 'cde'
UNION ALL
SELECT 'efg'

এখানে চিত্র বর্ণনা লিখুন

ইউএনআইএন সব এবং ইউনিয়ন কার্যক্রমের ফলাফল নিম্নলিখিত।

এখানে চিত্র বর্ণনা লিখুন

একটি ইউনিয়ন বিবৃতি কার্যকরভাবে ফলাফল সেট উপর একটি নির্বাচন নির্বাচন করে। যদি আপনি জানেন যে ফিরে আসা সমস্ত রেকর্ডগুলি আপনার ইউনিয়ন থেকে স্বতন্ত্র, পরিবর্তে ইউনিয়ন সমস্ত ব্যবহার করুন, এটি দ্রুত ফলাফল দেয়।

এক্সিকিউশন প্ল্যানে ডিস্টিন্ট বাছাইয়ের ক্রিয়ায় ইউনিয়ন ফলাফল ব্যবহার করা । এই বিবৃতি প্রমাণ করার প্রমাণ নীচে দেখানো হয়েছে:

এখানে চিত্র বর্ণনা লিখুন


3
এই উত্তরের প্রতিটি কিছু ইতিমধ্যে বলা হয়েছে, দরকারী হতে খুব বিভ্রান্তিকর (ইউনিয়নগুলিতে যোগদানের পরামর্শ দেয় যখন তারা বিভিন্ন কাজ করে তখন "ব্লকিং" দেওয়ার কারণ হিসাবে আপনি কী বোঝাতে চান বা কোন ডাটাবেস সার্ভারের ক্ষেত্রে এটি প্রয়োগ হয়), বা অত্যন্ত বিভ্রান্তিকর (আপনার স্ক্রিনশটে আপনার শতাংশগুলি UNION/ এর আসল ব্যবহারের ক্ষেত্রে প্রযোজ্য নয় UNION ALL)।

ব্লকিং অপারেটরগুলি টিএসকিউএল-এর সুপরিচিত অপারেটর। অপারেটরগুলিকে অবরুদ্ধ করে যা কিছু করে তা যোগসেরা দ্বারা অর্জন করা যেতে পারে তবে বিপরীতে নয়। আলাদা ইউনিট থেকে ইউনিয়ন কেন সর্বোত্তম কার্য সম্পাদন করে এবং বাস্তবায়নের পরিকল্পনায় এটি কোথায় রয়েছে তা সঠিকভাবে প্রদর্শন করার জন্য ছবিতে পৃথকীকরণ বাছাই করা অপারেশনটি চক্রাকারে আনা হয়। শতকরা চারপাশে খেলতে টি 1 এবং টি 2 টেবিলগুলিতে আরও ডেটা যুক্ত করতে নির্দ্বিধায়!
ডিবিএ

আপনি প্রযুক্তিগতভাবে unionএর joinগুলি এবং কিছু সত্যই দুষ্টু সমন্বয়ের সাহায্যে ফলাফল তৈরি করতে পারেন caseতবে এটি ক্যোয়ারীটি পড়া এবং বজায় রাখা অসম্ভবকে অসম্ভব করে তোলে এবং আমার অভিজ্ঞতাতে এটি পারফরম্যান্সের জন্যও ভয়াবহ। তুলনা করুন: select foo.bar from foo union select fizz.buzz from fizzবিরুদ্ধেselect case when foo.bar is null then fizz.buzz else foo.bar end from foo join fizz where foo.bar is null or fizz.buzz is null
ডিভিন ল্যামোথ

@ ডিবিএ আপনার উত্তরটি কেবলমাত্র এমএস এসকিউএল সার্ভারের ব্যবহারকারীদের জন্যই প্রাসঙ্গিক। ওপিতে তারা যে আরডিবিএমএস ব্যবহার করছে তা কখনই উল্লেখ করেনি - তারা মাইএসকিউএল, পোস্টগ্র্যাসকিউএল, ওরাকল, এসকিউএলাইট, ... ব্যবহার করছে
ফ্র্যাঙ্ক শিমিট

6

ইউনিয়ন দুটি টেবিল থেকে স্বতন্ত্র মান নির্বাচন করতে ব্যবহৃত হয় যেখানে ইউনিয়ন হিসাবে সমস্ত টেবিল থেকে নকল সহ সমস্ত মান নির্বাচন করতে ব্যবহৃত হয়


6

ভেন ডায়াগ্রাম দিয়ে বোঝা ভাল।

উত্সের লিঙ্কটি এখানে । একটি ভাল বর্ণনা আছে।

এখানে চিত্র বর্ণনা লিখুন


5
আপনার দ্বিতীয় চিত্রটি প্রস্তাব দেয় যে তারা দুটি যখন না তখন পারস্পরিক একচেটিয়া। ছবিটির পরিবর্তে প্রথমটির মতো দেখতে হবে তবে 'ছেদবৃত্তবৃত্ত' ()দ্বিতীয়বার প্রদর্শিত হবে। আসলে, দ্বিতীয় চিন্তায়, union allফলাফলটি কোনও সেট নয়, আপনার কোনও ভেন ডায়াগ্রাম ব্যবহার করে এটি আঁকার চেষ্টা করা উচিত নয়!
onedaywhen

5

(মাইক্রোসফ্ট এসকিউএল সার্ভার বুক অনলাইন থেকে)

ইউনিয়ন [সমস্ত]

উল্লেখ করে যে একাধিক ফলাফল সেটগুলি একত্রিত করতে হবে এবং একক ফলাফলের সেট হিসাবে ফিরে আসবে।

সব

ফলাফলগুলিতে সমস্ত সারি অন্তর্ভুক্ত করে। এর মধ্যে সদৃশ রয়েছে includes যদি নির্দিষ্ট না করা হয় তবে সদৃশ সারিগুলি সরানো হবে।

UNIONDISTINCTফলাফলগুলিতে সদৃশ সন্ধানের মতো সদৃশ সন্ধান করা সেক্ষেত্রে খুব বেশি সময় নিবে ।

SELECT * FROM Table1
UNION
SELECT * FROM Table2

এর সমতুল্য:

SELECT DISTINCT * FROM (
    SELECT * FROM Table1
    UNION ALL
    SELECT * FROM Table2) DT

DISTINCTফলাফলের উপর প্রয়োগের একটি পার্শ্ব প্রতিক্রিয়া ফলাফলগুলিতে বাছাই করা ক্রিয়াকলাপ

UNION ALLফলাফলগুলিতে ফলাফলকে নির্বিচারে আদেশ হিসাবে দেখানো হবে তবে UNIONফলাফলগুলিকে ফলাফলের ফলাফল হিসাবে প্রদর্শিত হবে ORDER BY 1, 2, 3, ..., n (n = column number of Tables)। আপনার কোনও সদৃশ সারি না থাকলে আপনি এই পার্শ্ব প্রতিক্রিয়াটি দেখতে পাবেন।


5

আমি একটি উদাহরণ যোগ করি,

ইউনিয়ন , এটি স্বতন্ত্র -> ধীরের সাথে একীভূত হচ্ছে, কারণ এর তুলনা করা প্রয়োজন (ওরাকল এসকিউএল বিকাশকারীতে, কোয়েরিটি নির্বাচন করুন, ব্যয় বিশ্লেষণ দেখতে F10 টিপুন)।

ইউনিয়ন সমস্ত , এটি স্বতন্ত্র -> দ্রুত ছাড়া মার্জ করা হচ্ছে is

SELECT to_date(sysdate, 'yyyy-mm-dd') FROM dual
UNION
SELECT to_date(sysdate, 'yyyy-mm-dd') FROM dual;

এবং

SELECT to_date(sysdate, 'yyyy-mm-dd') FROM dual
UNION ALL
SELECT to_date(sysdate, 'yyyy-mm-dd') FROM dual;

2

UNION দুটি কাঠামোগতভাবে সামঞ্জস্যপূর্ণ টেবিলের বিষয়বস্তুগুলিকে একক সম্মিলিত সারণীতে মার্জ করে।

  • পার্থক্য:

UNIONএবং এর মধ্যে পার্থক্যটি UNION ALLহ'ল UNION willসদৃশ রেকর্ডগুলি বাদ দিন যেখানে UNION ALLসদৃশ রেকর্ডগুলি অন্তর্ভুক্ত থাকবে।

Unionফলাফল সেটটিকে আরোহী ক্রমে বাছাই করা হয় যেখানে UNION ALLফলাফল সেটটি সাজানো হয় না

UNIONDISTINCTএর ফলাফল সেটটিতে একটি সম্পাদন করে যাতে এটি কোনও সদৃশ সারি দূর করে দেয়। যেখানে UNION ALLসদৃশগুলি মুছে ফেলা হবে না এবং তাই এটি এর চেয়ে দ্রুত UNION*

দ্রষ্টব্য : এর কার্যকারিতা UNION ALLসাধারণত তুলনায় ভাল হবে UNION, যেহেতু UNIONকোনও নকল অপসারণের অতিরিক্ত কাজ করার জন্য সার্ভারের প্রয়োজন। সুতরাং, যেখানে এটি নিশ্চিত যে কোনও অনুলিপি থাকবে না, বা যেখানে ডুপ্লিকেট থাকা কোনও সমস্যা নয়, সেখানে UNION ALLকার্যকারিতার কারণে ব্যবহারের পরামর্শ দেওয়া হবে।


1
"ইউনিয়ন ফলাফল সেটটি আরোহী ক্রমে সাজানো হয়" - যদি না থাকে ORDER BY, বাছাই করা ফলাফলের নিশ্চয়তা দেওয়া হয় না। হতে পারে আপনার মনে কোনও নির্দিষ্ট এসকিউএল বিক্রেতার কথা রয়েছে (তারপরেও আরোহণের ক্রমটি ঠিক কী ...?) তবে এই প্রশ্নের কোনও বিক্রেতার = নির্দিষ্ট ট্যাগ নেই।
onedaywhen

"দুটি কাঠামোগতভাবে সামঞ্জস্যপূর্ণ টেবিলের বিষয়বস্তুগুলিকে একত্রিত করে" - আমি মনে করি আপনি এই অংশটি সত্যিই ভাল বলেছেন :)
onedaywhen

2

ধরুন আপনার কাছে দুটি টেবিল শিক্ষক এবং শিক্ষার্থী রয়েছে

উভয়ের 4 টি কলাম রয়েছে এর মতো আলাদা নামের সাথে

Teacher - ID(int), Name(varchar(50)), Address(varchar(50)), PositionID(varchar(50))

এখানে চিত্র বর্ণনা লিখুন

Student- ID(int), Name(varchar(50)), Email(varchar(50)), PositionID(int)

এখানে চিত্র বর্ণনা লিখুন

আপনি যে দুটি টেবিলের সমান সংখ্যক কলাম রয়েছে তার জন্য আপনি ইউনিয়ন বা ইউনিয়ন সমস্ত প্রয়োগ করতে পারেন। তবে তাদের আলাদা নাম বা ডেটা টাইপ রয়েছে।

আপনি যখন UNION2 টি টেবিলগুলিতে অপারেশন প্রয়োগ করেন , এটি সমস্ত সদৃশ প্রবেশগুলিকে উপেক্ষা করে (একটি সারণীতে সারির সমস্ত কলামের মান অন্য সারণির সমান)। এটার মত

SELECT * FROM Student
UNION
SELECT * FROM Teacher

ফলাফল হবে

এখানে চিত্র বর্ণনা লিখুন

আপনি যখন UNION ALL2 টি টেবিলগুলিতে অপারেশন প্রয়োগ করেন , এটি ডুপ্লিকেট সহ সমস্ত এন্ট্রি প্রদান করে (যদি 2 টেবিলের মধ্যে একটি সারির কোনও স্তরের মানের মধ্যে কোনও পার্থক্য থাকে)। এটার মত

SELECT * FROM Student
UNION ALL
SELECT * FROM Teacher

আউটপুট এখানে চিত্র বর্ণনা লিখুন

কর্মক্ষমতা:

স্পষ্টতই ইউনিয়ন সমস্ত কর্মক্ষমতা হ'ল ইউএনএন যেহেতু তারা সদৃশ মানগুলি মুছে ফেলার জন্য অতিরিক্ত কাজ করে। আপনি এর থেকে চেক করতে পারে আনুমানিক সময় এক্সেকিউশন প্রেস দ্বারা Ctrl + Lএমএস স্কুয়েল


সত্যি? চার সারির ফলাফলের জন্য ?! আমি মনে করি এটি এমন একটি পরিস্থিতি যেখানে আপনি UNIONঅভিপ্রায় জানাতে ব্যবহার করতে চান (অর্থাত্ কোনও নকল নয়) কারণ UNION ALLনিখুঁত পদে কোনও বাস্তব জীবনের পারফরম্যান্স লাভের সম্ভাবনা নেই।
onedaywhen

2

খুব সাধারণ কথায় ইউএনওএন এবং ইউনিয়ন সকলের মধ্যে পার্থক্য হ'ল ইউনিয়ন সদৃশ রেকর্ড বাদ দেবে যেখানে ইউনিয়ন সকলের নকল রেকর্ড অন্তর্ভুক্ত থাকবে।


1

আমি আরও একটি জিনিস যুক্ত করতে চাই -

ইউনিয়ন : - ফলাফল সেটটি আরোহী ক্রমে বাছাই করা হয়।

ইউনিয়ন সমস্ত : - ফলাফল সেট বাছাই করা হয় না। দুটি ক্যোয়ারী আউটপুট কেবল সংযুক্ত হবে।


সত্য! ইউনিয়ন দুটি উপ-ফলাফলের ক্রম পরিবর্তন করতে পারে।
গ্রাচুস

6
এটা ভুল. একটি ফলাফল আরোহী ক্রম অনুসারে বাছাই UNIONকরবে না । ব্যবহার না করে ফলস্বরূপ যে কোনও আদেশ আপনি দেখতে পাচ্ছেন order byতা খাঁটি কাকতালীয়। ডিবিএমএস হ'ল নকলগুলি সরিয়ে ফেলতে দক্ষ বলে মনে করে এমন কোনও কৌশল ব্যবহার করতে নিখরচায়। এটি বাছাই করা হতে পারে তবে এটি একটি হ্যাশিং অ্যালগরিদম বা সম্পূর্ণ আলাদা কিছু হতে পারে - এবং কৌশলটি সারিগুলির সংখ্যার সাথে পরিবর্তিত হবে। একজন unionযে প্রদর্শিত হয় 100 সারি দিয়ে সাজানো 100.000 সারি দিয়ে নাও হতে পারে
a_horse_with_no_name

2
কোয়েরিতে কোনও অর্ডার বাই ক্লজ ব্যতীত আরডিবিএমএস যে কোনও সিকোয়েন্সগুলিতে সারিগুলি ফিরতে মুক্ত । ইউনিয়ন অপারেশন থেকে ফলাফল নির্ধারিত পর্যবেক্ষণটি "আরোহী ক্রমে" ফিরে আসে কেবল ডাটাবেস দ্বারা সম্পাদিত "সাজানো অনন্য" অপারেশনের একটি উপজাত । পর্যবেক্ষণ আচরণ গ্যারান্টিযুক্ত হয় না । সুতরাং এটির উপর নির্ভর করবেন না। স্পেসিফিকেশনটি যদি কোনও নির্দিষ্ট ক্রমে সারিগুলি ফেরত দেয় তবে একটি উপযুক্ত ORDER BYধারা যুক্ত করুন।
spencer7593

1

ইউনিয়ন বনাম ইউনিয়ন সকলের মধ্যে পার্থক্য q

এসকিউএল ইউনিয়ন কি?

দুই বা ততোধিক ডেটা সেট ফলাফল-সেট একত্রিত করতে ইউএনআইএন অপারেটর ব্যবহার করা হয়।

Each SELECT statement within UNION must have the same number of columns
The columns must also have similar data types
The columns in each SELECT statement must also be in the same order

ইউনিয়ন বনাম ইউনিয়ন সব উদাহরণ সহ


1

গুরুত্বপূর্ণ! ওরাকল এবং মাইএসকিএলের মধ্যে পার্থক্য: আসুন আমরা বলি যে t1 t2 এর মধ্যে সদৃশ সারি নেই তবে তাদের পৃথক পৃথকভাবে সদৃশ সারি রয়েছে। উদাহরণ: টি 1 এর বিক্রয় 2017 এবং 2018 থেকে টি 2 রয়েছে

SELECT T1.YEAR, T1.PRODUCT FROM T1

UNION ALL

SELECT T2.YEAR, T2.PRODUCT FROM T2

ORACLE ইউনিয়নে সমস্ত উভয় সারণী থেকে সমস্ত সারি নিয়ে আসে। মাইএসকিউএলে একই ঘটবে।

যাহোক:

SELECT T1.YEAR, T1.PRODUCT FROM T1

UNION

SELECT T2.YEAR, T2.PRODUCT FROM T2

ইন ওরাকল , ইউনিয়ন উভয় টেবিল থেকে সব সারি নিয়ে আসে কারণ T1 এবং T2 মধ্যে কোন সদৃশ মান। অন্যদিকে মাইএসকিউএলে ফলসেটটিতে কম সারি থাকবে কারণ টেবিল টি 1 এর মধ্যে এবং টেবিল টি 2 এর মধ্যেও সারণি থাকবে!


0

ইউনিয়ন অন্যদিকে নকল রেকর্ডগুলি সরিয়ে দেয় ইউনিয়ন সবগুলি তা করে না। তবে একটি প্রক্রিয়াজাত হতে চলেছে এবং প্রচুর পরিমাণে ডেটা এবং কলাম এবং ডেটা ধরণের একই হওয়া উচিত check

যেহেতু ইউনিয়ন অভ্যন্তরীণভাবে সারিগুলি নির্বাচন করতে "স্বতন্ত্র" আচরণ ব্যবহার করে তাই সময় এবং কার্য সম্পাদনের ক্ষেত্রে এটি আরও ব্যয়বহুল। মত

select project_id from t_project
union
select project_id from t_project_contact  

এটি আমাকে 2020 রেকর্ড দেয়

অন্যদিকে

select project_id from t_project
union all
select project_id from t_project_contact

আমাকে 17402 এরও বেশি সারি দেয়

অগ্রাধিকার দৃষ্টিকোণ উভয় একই প্রাধান্য আছে।


0

যদি এটি না থাকে তবে ORDER BYএকটি UNION ALLসরে যাওয়ার সাথে সাথে সারিগুলি ফিরিয়ে আনতে পারে, তবে এটি UNIONআপনাকে একবারে পুরো ফলাফল সেট করার আগে ক্যোয়ারির একেবারে শেষ অবধি অপেক্ষা করতে বাধ্য করে। এটি একটি সময়ের বাইরে থাকা পরিস্থিতিতে পার্থক্য আনতে পারে - UNION ALLএটি সংযোগটি যেমন ছিল তেমন রাখে।

সুতরাং আপনার যদি সময়ের বাইরে সমস্যা থাকে এবং কোনও বাছাই হয় না এবং নকলগুলি কোনও সমস্যা না হয় UNION ALLতবে এটি সহায়ক হতে পারে rather


তবে আপনার প্রথম ফলাফলের এক সারি বহুবার নকল হতে পারে: এটি কতটা কার্যকর?!
onedaywhen

0

ইউনিয়ন এবং ইউনিয়ন সবই দু'জন বা ততোধিক কোয়েরি ফলাফল একত্রিত করত to

ইউনিয়ন কমান্ড দুটি সারণী থেকে স্বতন্ত্র ও সম্পর্কিত তথ্য নির্বাচন করে যা সদৃশ সারিগুলি সরিয়ে ফেলবে।

অন্যদিকে, ইউনিয়ন সমস্ত কমান্ড উভয় সারণী থেকে সমস্ত মান নির্বাচন করে, যা সমস্ত সারি প্রদর্শন করে।


0

অভ্যাস হিসাবে সর্বদা ইউনিয়ন সমস্ত ব্যবহার করুন । যখন আপনাকে নকলগুলি মুছে ফেলতে হবে যা অত্যন্ত নোংরা হতে পারে এবং আপনি এখানে অন্যান্য মন্তব্যগুলিতে সমস্ত কিছু পড়তে পারেন শুধুমাত্র বিশেষ ক্ষেত্রে কেবল ইউনিয়ন ব্যবহার করুন।


0

UNION ALLএছাড়াও আরও ডেটা ধরণের উপর কাজ করে। উদাহরণস্বরূপ স্থানিক ডেটা ধরণের ইউনিয়ন করার চেষ্টা করার সময়। উদাহরণ স্বরূপ:

select a.SHAPE from tableA a
union
select b.SHAPE from tableB b

নিক্ষেপ করবে

The data type geometry cannot be used as an operand to the UNION, INTERSECT or EXCEPT operators because it is not comparable.

তবে union allহবে না।


-2

পার্থক্যটি হ'ল:

"ইউনিয়ন" সদৃশ সারিগুলি সরিয়ে দেয়।

"ইউনিয়ন সমস্ত" সদৃশ সারিগুলি সরায় না।


13
গৃহীত উত্তরের তুলনায় এটি কীভাবে কোনও মান যুক্ত করে?
নিক

@ নিক এটি সংক্ষিপ্ত উত্তর।
মোস্তফা বটানপুর

এই ডেটা পেতে আপনাকে যদি গ্রহণযোগ্য উত্তরের একটি উল্লেখযোগ্য অংশটি পড়তে হয় তবে সংক্ষিপ্ততর সুবিধা হতে পারে। তবে এক্ষেত্রে স্বীকৃত উত্তরের মধ্যে প্রথম প্রথম বাক্যে এই সমস্ত তথ্য রয়েছে যার পরে এটি পার্থক্যের প্রভাবগুলি বিস্তারিতভাবে আলোচনা করতে চলেছে।
ডিএমকেকে --- প্রাক্তন-মডারেটর বিড়ালছানা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.