হ্যাশ কীগুলি তদন্ত এবং অবশিষ্টাংশ


21

বলুন, আমাদের এই জাতীয় একটি প্রশ্ন আছে:

select a.*,b.*
from 
a join b
on a.col1=b.col1
and len(a.col1)=10

উপরের ক্যোয়ারীটি হ্যাশ জোড় ব্যবহার করে এবং তার একটি অবশিষ্টাংশ রয়েছে বলে ধরে নিলে প্রোব কীটি হবে col1এবং অবশিষ্টটি হবে len(a.col1)=10

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

প্রশ্ন:

select *
from T1 join T2 on T1.a = T2.a 

অনুসন্ধান ও অবশিষ্টাংশ হাইলাইট করে কার্যকর করার পরিকল্পনা:

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

পরীক্ষার ডেটা:

create table T1 (a int, b int, x char(200))
create table T2 (a int, b int, x char(200))

set nocount on
declare @i int
set @i = 0
while @i < 1000
  begin
      insert T1 values (@i * 2, @i * 5, @i)
    set @i = @i + 1
  end

declare @i int
set @i = 0
while @i < 10000
  begin
    insert T2 values (@i * 3, @i * 7, @i)
    set @i = @i + 1
  end

প্রশ্ন:

কীভাবে একটি প্রোব এবং অবশিষ্টাংশ একই কলাম হতে পারে? এসকিউএল সার্ভার কেন কেবল প্রোব কলামটি ব্যবহার করতে পারে না? পুনরায় ফিল্টার করার জন্য কেন এটি একই কলামটিকে অবশিষ্টাংশের মতো একই কলাম ব্যবহার করতে হবে?

পরীক্ষার ডেটার জন্য রেফারেন্স:

উত্তর:


22

জোড় যদি কোনও একক কলামে টাইপ করা হয় tinyint, smallintবা integer* এবং যদি এবং উভয় কলামই সীমাবদ্ধ থাকে NOT NULLতবে হ্যাশ ফাংশনটি 'নিখুঁত' - যার অর্থ হ্যাশের সংঘর্ষের কোনও সম্ভাবনা নেই, এবং ক্যোয়ারী প্রসেসরটি পরীক্ষা করতে হবে না মানগুলি আবার সত্যই মেলে তা নিশ্চিত করার জন্য।

অন্যথায়, আপনি একটি অবশিষ্টাংশ দেখতে পাবেন কারণ হ্যাশ বালতির আইটেমগুলি কেবল একটি হ্যাশ ফাংশন ম্যাচ নয়, একটি ম্যাচের জন্য পরীক্ষা করা হয়।

আপনার পরীক্ষা নির্দিষ্ট করে দেয় না NULLবা NOT NULLকলামগুলির জন্য (উপায় দ্বারা একটি খারাপ অভ্যাস), সুতরাং এটি প্রদর্শিত হয় যে আপনি কোনও ডাটাবেস ব্যবহার করছেন যেখানে NULLডিফল্ট।

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


* অন্যান্য যোগ্যতার প্রকারগুলি হ'ল এন = 1 এবং বাইনারি কোলেশনের জন্য বিট , স্মার্টডেটটাইম , স্মলমনি এবং (ভ্যার) চর (এন)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.