আমাদের গ্রাহকরা DECIMAL(18,0)
তার এসকিউএল সার্ভার ২০০৮ আর ২ ডাটাবেসে কিছু কলামের ডেটাটাইপ ব্যবহার করেন। কলামগুলি বেশ ধীরে ধীরে বাড়ার কারণে, তিনি সম্প্রতি DECIMAL(5,0)
কিছু স্টোরেজ ফিরে পেতে ডেটাটাইপ পরিবর্তন করার প্রস্তাব করেছিলেন ।
এমএসডিএন লাইব্রেরি অনুসারে , DECIMAL(5,0)
ডেটাটাইপের স্টোরেজ স্পেসটি হ'ল DECIMAL(9,0)
ডেটাটাইপ, 5 বাইটের মতো। INT
1 বাইট ছোট, তবে -99,999 থেকে 99,999 এর পরিবর্তে -2 ^ 31 থেকে 2 ^ 31 এর মধ্যে সব DECIMAL(5,0)
কিছু সঞ্চয় করতে পারে যা সঞ্চয় করতে পারে। এমনকি বৃহত্তম DECIMAL
যা 5 বাইটের সাথে ফিট করে ( DECIMAL(9,0)
) কেবলমাত্র 9999,999,999 থেকে 999,999,999 (যা INT
4 বাইটে রেঞ্জের অফারের অর্ধেকেরও কম) সীমাতে পূর্ণসংখ্যা সংরক্ষণ করতে পারে ।
আমি DECIMAL
ওভার ব্যবহারের দুটি "সুবিধা" সম্পর্কে ভাবতে পারি INT
:
- পরে আরও স্টোরেজ স্পেস ব্যবহার না করে স্কেল যুক্ত করার ক্ষমতা
- ডেটা ধরণের পরিবর্তন না করে 38 ডিগ্রি পর্যন্ত নির্ভুলতা স্কেল করার ক্ষমতা
তবে এগুলি আমার মতে আসল সুবিধা নয়:
- পূর্ণসংখ্যার সাথে স্কেল যুক্ত করা কেবল খুব অল্প ক্ষেত্রেই বোঝা যায় (বেশিরভাগ ক্ষেত্রে যেখানে স্কেল আলাদা করে তোলে, এটি আগেও যুক্ত করা যেতে পারে)
- এসকিউএল সার্ভার প্রতিটি সূক্ষ্মতা / স্কেল সংমিশ্রণটিকে একটি ভিন্ন ডেটা ধরণের হিসাবে দেখায়, তাই নির্ভুলতা বা স্কেল বাড়ানোর সময় ডেটাটাইপ একা থাকে না।
এটি আমাকে অবাক করে তোলে: DECIMAL(5,0)
পূর্ণসংখ্যার জন্য ডেটাটাইপের যুক্ত সুবিধা কী?
decimal(x,0)
এবং একটি পূর্ণসংখ্যার প্রকারের মধ্যে আর একটি পার্থক্য গাণিতিক বিভাগে নিজেকে দেখায়। আপনি যদি কোন int দ্বারা কোনও int ভাগ করেন তবে আপনি একটি int পাবেন। যদি আপনি কোনও দশমিক (x, 0) কে কোনও int দিয়ে ভাগ করেন তবে আপনি একটি দশমিক (x + 6,6) পান।