এসকিউএলে দুটি বৃহত ডেটা সেটগুলির তুলনা করার একটি কার্যকর উপায়


12

বর্তমানে, আমি দুটি ডেটা সেট তুলনা করছি, এতে অনন্য StoreKey/ProductKeyসংমিশ্রণ রয়েছে।

1 ম ডাটা সেটটিতে StoreKey/ProductKeyজানুয়ারী 2012 এবং শেষ মে 2014 (ফলাফল = 450 কে লাইন) এর মধ্যে বিক্রয়ের জন্য অনন্য সংমিশ্রণ রয়েছে। ২ য় ডেটা সেটে StoreKey/ProductKeyবিক্রি করার জন্য জুন ২০১৪ থেকে আজ অবধি (ফলাফল = 190 কে লাইন) অনন্য সংমিশ্রণ রয়েছে।

আমি StoreKey/ProductKey২ য় সেটে যে সংমিশ্রণগুলি সন্ধান করতে চাইছি , কিন্তু প্রথম সেটে নেই - অর্থাত্ জুনের শুরু থেকে বিক্রি হওয়া নতুন পণ্য।

এখনও অবধি, আমি দুটি তথ্য সেট টেম্প টেবিলগুলিতে ফেলেছি, উভয় কীগুলিতে উভয় টেবিলের জন্য সূচি তৈরি করেছি এবং EXCEPTঅনন্য আইটেমগুলি সন্ধানের জন্য বিবৃতিটি ব্যবহার করেছি ।

এত বড় ডেটা সেটগুলির তুলনা করার সবচেয়ে কার্যকর উপায় কোনটি? এই ধরণের বড় তুলনা করার আরও কার্যকর উপায় আছে কি?

উত্তর:


10

এক্সেসপিটি ব্যবহার করা আমার মতে এখানে যাওয়ার উপায়, তবে আপনি অস্থায়ী সারণীর ব্যবহারটি পুনর্বিবেচনা করতে চাইতে পারেন। এটি করে আপনি কার্যকরভাবে মেমরিতে আপনার ডেটা সদৃশ করছেন, যা আপনাকে ধীর করে দেবে। আপনার সূচকগুলি সূত্রের টেবিলগুলিতে উপস্থিত থাকলে (যেমন আমি সন্দেহ করি), কেবল উপযুক্ত নির্বাচনগুলি তুলনা করুন:

SELECT StoreKey,ProductKey FROM table WHERE sales BETWEEN date1 AND date2
EXCEPT
SELECT StoreKey,ProductKey FROM table WHERE sales BETWEEN date3 AND date4

1
ঠিক আছে, টেবিলের সূচী রয়েছে তবে এটি দুটি প্রয়োজনীয় ক্ষেত্রের উপর একটি ক্লাস্টারড সূচক, ট্রান্সঅ্যাকশনডেটকি নামে একটি ক্ষেত্র। আমি যদি প্রয়োগ করি তবে কি একটি বড় পার্থক্য দেখা যাবে: ক।) স্টোরকি এবং প্রোডাককে-তে একটি ক্লাস্টারড সূচক খ।) স্টোরকি এবং প্রোডাককেতে যথাক্রমে দুটি পৃথক নন-ক্লাস্টারড ইনডেক্স?
পিয়েরে প্রিটোরিয়াস

1
আমি ধরে নিই TransactionDateKeyসময়কাল ফিল্টার করতে ব্যবহৃত কলাম। যে ক্ষেত্রে উপর ক্লাস্টার সূচক TransactionDateKey, StoreKeyএবং ProductKeyনির্ভুল।
টুইঙ্কলস

1

আপনি যদি অ্যালগরিদম (বিগ-ও জটিলতা) এর সাথে পরিচিত হন তবে এই তুলনাটি সম্পাদন করা সেরা O (n লগ (এন))। সর্বাধিক দক্ষ অ্যালগরিদম উভয় ডেটা সেটকে বাছাই করবে, তারপরে ম্যাচিং (বা তুলনামূলক) কীগুলি সন্ধানের জন্য সমান্তরালে এগুলিকে একত্রীকরণে চালিত করবে। আপনি যখন ব্যবহার করছেন EXCEPTবা ব্যবহার করছেন তখন বেশিরভাগ আরডিবিএমএস অপ্টিমাইজার আপনার জন্য স্বয়ংক্রিয়ভাবে এটি করবে MINUS। আপনার ব্যাখ্যা পরিকল্পনা নিশ্চিত বা অস্বীকৃতি জানাবে। যদি আপনি নেস্টেড লুপগুলি দেখেন তবে আপনি ও (এন ^ 2) হিসাবে দক্ষ হিসাবে কাজ করছেন না।


ধন্যবাদ জোসুয়া বিগ-ও জটিলতার সাথে পরিচিত নয়, তবে অবশ্যই এটি দেখতে পাবেন।
পিয়েরে প্রিটোরিয়াস

জটিলতা বিশ্লেষণ সম্পর্কে আরও জানতে লিঙ্কগুলি, যা কিছু লোক কথোপকথনকে বিগ-ও হিসাবে উল্লেখ করে। এটি প্রথমে দেখতে যতটা শক্ত তা নয়। লোকেরা যখন বলে যে কোনও কাজ রৈখিক সময় বা বহুপদী সময় চলবে, তারা এটিকেই উল্লেখ করছে। সাধারণভাবে ডেটাবেস ব্যাকআপ লিনিয়ার, মানে 2x ডাটাবেসের আকার ব্যাকআপ নিতে 2x সময় নেয়। একটি ডেটা বাছাই করা যদিও এটি লিনিয়ার নয় set 2x এর মতো বড় ফাইলটি বাছাই করতে 2x এরও বেশি সময় নেয়। bigocheatsheet.com , উইকি সালে en.wikipedia.org/wiki/Time_complexity এটা উল্লেখ দ্রুততম সম্ভব তুলনা সাজানোর "linearithmic সময়" = ঢ লগ (ঢ) হয়।
জোশুয়া হুবার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.