মাইএসকিউএল-তে টিনিন্যান্ট, স্মলিন্ট, মিডিয়ামিন্ট, বিগিন্ট এবং ইন্টের মধ্যে পার্থক্য কী?


368

মাইএসকিউএল-তে টিনিন্যান্ট, স্মলিন্ট, মিডিয়ামিন্ট, বিগিন্ট এবং ইন্টের মধ্যে পার্থক্য কী?

কোন ক্ষেত্রে এগুলি ব্যবহার করা উচিত?

উত্তর:


574

তারা বিভিন্ন পরিমাণে জায়গা নেয় এবং তাদের গ্রহণযোগ্য মানের বিভিন্ন ব্যাপ্তি রয়েছে।

এসকিউএল সার্ভারের জন্য মানগুলির আকার এবং ব্যাপ্তি এখানে রয়েছে , অন্য আরডিবিএমএসের অনুরূপ ডকুমেন্টেশন রয়েছে:

দেখা যাচ্ছে তারা সবাই একই স্পেসিফিকেশন ব্যবহার করে (নীচে উল্লিখিত কয়েকটি ছোট ব্যতিক্রম সহ) তবে এই ধরণের বিভিন্ন সংমিশ্রণকে সমর্থন করে (ওরাকল অন্তর্ভুক্ত নয় কারণ এটিতে কেবল একটি NUMBERডেটাটাইপ রয়েছে, উপরের লিঙ্কটি দেখুন):

             | SQL Server    MySQL   Postgres    DB2
---------------------------------------------------
tinyint      |     X           X                
smallint     |     X           X         X        X
mediumint    |                 X
int/integer  |     X           X         X        X 
bigint       |     X           X         X        X

এবং তারা একই মানের সীমাগুলি সমর্থন করে (নীচে এক ব্যতিক্রম সহ) এবং সবার একই স্টোরেজ প্রয়োজনীয়তা রয়েছে:

            | Bytes    Range (signed)                               Range (unsigned)
--------------------------------------------------------------------------------------------
tinyint     | 1 byte   -128 to 127                                  0 to 255
smallint    | 2 bytes  -32768 to 32767                              0 to 65535
mediumint   | 3 bytes  -8388608 to 8388607                          0 to 16777215
int/integer | 4 bytes  -2147483648 to 2147483647                    0 to 4294967295
bigint      | 8 bytes  -9223372036854775808 to 9223372036854775807  0 to 18446744073709551615 

"স্বাক্ষরযুক্ত" প্রকারগুলি কেবল মাইএসকিউএলে পাওয়া যায় এবং বাকিগুলি কেবল একটি উল্লেখযোগ্য ব্যতিক্রম সহ স্বাক্ষরিত রেঞ্জগুলি ব্যবহার করে: tinyintএসকিউএল সার্ভারে স্বাক্ষরবিহীন এবং এর মান 0 থেকে 255 অবধি থাকে


21
আমি জানতাম না যে স্বাক্ষরযুক্ত প্রকারগুলি কেবল মাইএসকিউএল-তে পাওয়া যায়, এটি অন্য আরডিবিএমএসের চেয়ে মাইএসকিউএলের একটি বিশাল সুবিধা। এই উত্তর পোস্ট হওয়ার পর থেকে কিছু পরিবর্তন হয়েছে?
বায়োক্স

3
@ ড্যানিয়েল, তারা কী ভাবছে, 3 বাইটের জন্য একটি করে 6 টি বাইটের জন্য কেন নেই?
পেসারিয়ার

9
@ পেসারিয়র সম্ভবত তারা নামটি কীভাবে জানবেন না :))
মিহাই মাতেই

5
তারা ডেকেছে উচিত যে একটি humongousint একটি bigint পরিবর্তে bigint এর।
মারিওডিএস

5
গ্রেটইন্ট একটি বিকল্প হতে পারে, ওরাকল একটি মার্কিন সংস্থা হয়ে being :)
ওসিরিস

32

প্রয়োজনীয় স্টোরেজটির আকার এবং কত বড় সংখ্যা হতে পারে

এসকিউএল সার্ভারে

টিনিনেন্ট 1 বাইট, 0 থেকে 255

স্মার্টিন্ট 2 বাইট, -2 ^ 15 (-32,768) থেকে 2 ^ 15-1 (32,767)

int 4 বাইট, -2 ^ 31 (-2.147.483.648) থেকে 2 ^ 31-1 (2.147.483.647)

বিগিন্ট 8 বাইট, -2 ^ 63 (-9,223,372,036,854,775,808) থেকে 2 ^ 63-1 (9,223,372,036,854,775,807)

আপনি সমস্ত 4 এ 1 নম্বর সংরক্ষণ করতে পারেন তবে একটি বিগিন্ট 8 টি বাইট ব্যবহার করবে যখন একটি টিনিনেন্ট 1 বাইট ব্যবহার করবে


15

এগুলি মাইএসকিউএল ডেটা প্রকার বলে মনে হচ্ছে।

ডকুমেন্টেশন অনুযায়ী তারা নেয়:

  1. টিনিনেন্ট = 1 বাইট
  2. স্মার্টিন্ট = 2 বাইট
  3. মিডিয়ামিন্ট = 3 বাইট
  4. int = 4 বাইট
  5. বিগিন্ট = 8 বাইট

এবং, স্বাভাবিকভাবেই, ক্রমবর্ধমান সংখ্যার বিস্তৃতি গ্রহণ করুন।


9

যখন এই ডেটাটাইপগুলির বাস্তব জগতে ব্যবহার হয়, আপনি এটি বুঝতে খুব গুরুত্বপূর্ণ যে নির্দিষ্ট পূর্ণসংখ্যার প্রকারগুলি কেবলমাত্র একটি ওভারকিল বা এর অধীনে ব্যবহৃত হতে পারে। উদাহরণস্বরূপ, কোনও টেবিলে কর্মচারীর জন্য পূর্ণসংখ্যার ডেটাটাইপ ব্যবহার করে বলা হয় যে কর্মচারী একটি ওভারকিল হতে পারে যেহেতু এটি বিভিন্ন ধরণের পূর্ণসংখ্যার মানকে ~ণাত্মক 2 বিলিয়ন থেকে ধনাত্মক 2 বিলিয়ন বা শূন্য থেকে প্রায় 4 বিলিয়ন (স্বাক্ষরবিহীন) সমর্থন করে। সুতরাং, যদি আপনি ওয়ালমার্টের মতো মার্কিন যুক্তরাষ্ট্রে সবচেয়ে বড় নিয়োগকর্তাকে বিবেচনা করেন তবে প্রায় ২২.২ মিলিয়ন কর্মচারী কর্মচারীর অ্যাকাউন্টের কলামের জন্য একটি পূর্ণসংখ্যার ডেটাটাইপ ব্যবহার করে অপ্রয়োজনীয় হবে। এরকম ক্ষেত্রে আপনি উদাহরণস্বরূপ মিডিয়ামিন্ট (যা 0 থেকে 16 মিলিয়ন (স্বাক্ষরবিহীন) থেকে সমর্থন করে) ব্যবহার করে। বলার অপেক্ষা রাখে না যে যদি আপনার পরিসরটি অস্বাভাবিকভাবে বড় হওয়ার প্রত্যাশা করা হয় তবে আপনি বিগিন্টকে বিবেচনা করতে পারেন যা আপনি ড্যানিয়েলের কাছ থেকে দেখতে পাচ্ছেন '


2
আপনার ওয়ালমার্টের উদাহরণে ২.২ এম সক্রিয় কর্মচারী - আমি মনে করি যে কর্মচারীদের বার্ষিক প্রায় ৫০% টার্নওভার হ'ল এমপ্লয়াইডে আইএনটি টাইপ ন্যূনতম প্রয়োজনীয় হবে। আপনি সব কি মনে করেন? মঞ্জুর - সর্বাধিক সাধারণ সংস্থাগুলির জন্য একটি INT প্রকারটি ওয়ে ওভারকিল হবে!
কিল্টনেন


2

ডেটা ধরণের রেঞ্জ স্টোরেজ

bigint  -2^63 (-9,223,372,036,854,775,808) to 2^63-1 (9,223,372,036,854,775,807)    8 Bytes
int -2^31 (-2,147,483,648) to 2^31-1 (2,147,483,647)    4 Bytes
smallint    -2^15 (-32,768) to 2^15-1 (32,767)  2 Bytes
tinyint 0 to 255    1 Byte

উদাহরণ

নিম্নলিখিত উদাহরণটি বিগিন্ট, ইনট, স্মার্টিন্ট এবং টিনিনেন্ট ডেটা টাইপ ব্যবহার করে একটি সারণী তৈরি করে। মানগুলি প্রতিটি কলামে sertedোকানো হয় এবং নির্বাচনী বিবৃতিতে ফিরে আসে।

CREATE TABLE dbo.MyTable
(
  MyBigIntColumn bigint
 ,MyIntColumn  int
 ,MySmallIntColumn smallint
 ,MyTinyIntColumn tinyint
);

GO

INSERT INTO dbo.MyTable VALUES (9223372036854775807, 214483647,32767,255);
 GO
SELECT MyBigIntColumn, MyIntColumn, MySmallIntColumn, MyTinyIntColumn
FROM dbo.MyTable;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.