একটি কলামের জন্য সংখ্যা ও বনাম পূর্ণসংখ্যার - আকার এবং কর্মক্ষমতা


11

আমার একটি অ্যাপ্লিকেশন রয়েছে যা একটি পোস্টগ্র্যাসকিউএল টেবিল ব্যবহার করে। সারণীটি খুব বড় (কোটি কোটি সারি) এবং একটি কলাম রয়েছে যা একটি পূর্ণসংখ্যা is

integer6 সংখ্যা, অর্থাত 0-999,999, কোন নেগেটিভ পর্যন্ত হতে পারে।

আমি এটি হতে পরিবর্তন সম্পর্কে চিন্তা numeric(6,0)

এটি একটি ভাল ধারণা হবে? চান numeric(6,0)তার চেয়ে কম বাইট নেবেন? পারফরম্যান্স সম্পর্কে কীভাবে (এই টেবিলটি অনেক জিজ্ঞাসা করা হচ্ছে)?

উত্তর:


11

এটি একটি ভাল ধারণা হবে?

না।

হবে numeric(6,0)কম বাইট নেবেন?

না।

test=> SELECT pg_column_size(INT4 '999999'), pg_column_size(NUMERIC(6,0) '999999');
 pg_column_size | pg_column_size 
----------------+----------------
              4 |             10
(1 row)

পারফরম্যান্স সম্পর্কে কীভাবে (এই টেবিলটি অনেক জিজ্ঞাসা করা হচ্ছে)?

ধীরে। এটি বাইনারি কোডযুক্ত দশমিক হিসাবে সঞ্চিত কারণ এটি একটি স্বেচ্ছাচারিত নির্ভুলতার মান।


সমস্ত সম্মত, পার্শ্ব নোট হিসাবে সংখ্যার একটি সুবিধা রয়েছে কারণ এটি স্বয়ংক্রিয়ভাবে 0-999999 ডোমেনটি প্রয়োগ করে। এটি অবশ্য ক্ষেত্রে পৃথক বাধা দিয়ে সমাধান করা যেতে পারে
লেনার্ট

1
কোনও numericকলামে পরিবর্তন করতে সমস্যা আছে int?
রেসার এসকিউএল

@ রেসার এসকিউএল হ্যাঁ যদি আপনার মান থাকে যা মান আকারকে উপচে ফেলবে।
ডিলান ইউইং

5

আপনার সমস্ত প্রশ্নের সুনির্দিষ্ট উত্তর নেই। আপনি এটির জন্য যে কোনও কিছু ব্যবহার করতে পারবেন তার জন্য পূর্ণসংখ্যা হ'ল উপায়। (উদাহরণস্বরূপ অর্থ)

এক মিনিটের জন্য এটি সম্পর্কে চিন্তা করুন। ডাটাবেস ইঞ্জিনটি যখন একটি পূর্ণসংখ্যার মুখোমুখি হয়, তখন এটি খুব দক্ষতার সাথে পরিচালনা করে কারণ এর সাথে খুব বেশি ব্যাখ্যা নেই। এটি একটি সম্পূর্ণ সংখ্যা। সংখ্যার ধরণটি স্ট্রিংয়ের মতো আচরণ করে। ইঞ্জিনটি প্রথমে দশমিক বিন্দুর আগে এবং পরে কোন অংশগুলি রয়েছে তা নির্ধারণ করতে হবে এবং সংখ্যাসূচক ক্রিয়াকলাপ সম্পাদনের জন্য সেগুলি যথাযথভাবে ম্যাসেজ করতে হবে।

একটি পূর্ণসংখ্যার ব্যবহার সর্বদা সংখ্যার চেয়ে বেশি কার্যকর হবে যদিও সংখ্যার ধরণগুলি মানুষের জন্য প্রায়শই বেশি সুবিধাজনক।


টাকার কথা এলে আমি দ্বিমত পোষণ করি। ছোট আকারের পূর্ণসংখ্যার ব্যবহার, ডিসিকেন্ট (প্রতি ডলারে 1000) সংরক্ষণ করা ঠিক, তবে বিশ্রী। এটি ব্যবহারে দ্রুত আরও ব্যবহারিক হয়ে ওঠে NUMERIC। ছোট আকারের পূর্ণসংখ্যা যদিও অর্থের জন্য ভাসমান পয়েন্ট মান ব্যবহার করার চেয়ে ভাল।
ক্রেগ রিঞ্জার

2
@ ক্রেইগ্রিঞ্জার আমি মনে করি না আপনি আসলে আমার সাথে একমত নন! আমি সম্মত হই যে অর্থের জন্য দশমিক ব্যবহার করা বিকাশকারীটির পক্ষে সর্বদা কম বিশ্রী হয় তবে প্রশ্নটি দক্ষতার প্রশ্নটি তাই না? পূর্ণসংখ্যা হ্যান্ডলিং সবসময় দ্রুত হয়। এছাড়াও, ব্যাংকিং অ্যাপ্লিকেশনগুলি লেখার সময়, আপনি কিছু অদ্ভুত গোলাকার বিষয়গুলির মধ্যে আসতে পারেন যা বেশিরভাগ লোকেরা তাদের যত্ন নেবে না তবে এটি ব্যাংকগুলির পক্ষে অত্যন্ত গুরুত্বপূর্ণ। সুতরাং, আমিও অর্থের জন্য ভাসমান পয়েন্টটি ব্যবহার না করার বিষয়ে আপনার সাথে একমত হই!
stubstਹੀizard

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