একটি উদাহরণ যেখানে এটি একটি পার্থক্য আনতে পারে তা হ'ল এটি এমন পারফরম্যান্স অপটিমাইজেশনকে আটকাতে পারে যা ট্রিগারগুলির পরে সারণিতে সারি সংস্করণ তথ্য যুক্ত করা এড়িয়ে যায়।
এটি এসকিউএল কিভি দ্বারা আচ্ছাদিত এখানে
সঞ্চিত ডেটার আসল আকারটি অবিচলিত - এটি সম্ভাব্য আকার যা গুরুত্বপূর্ণ।
একইভাবে যদি মেমোরি অপ্টিমাইজড টেবিলগুলি 2016 এর পরে ব্যবহার করা হয় তবে এলওবি কলাম বা কলাম প্রস্থের সংমিশ্রণগুলি ব্যবহার করা সম্ভব হয়েছে যা সম্ভাব্যভাবে ইন্রো সীমা ছাড়িয়ে যেতে পারে তবে জরিমানা সহ।
(সর্বাধিক) কলামগুলি সর্বদা অফ-সারি সঞ্চিত থাকে। অন্যান্য কলামগুলির জন্য, যদি টেবিল সংজ্ঞায় ডেটা সারির আকার 8,060 বাইট ছাড়িয়ে যেতে পারে, এসকিউএল সার্ভার অফ-সারিতে বৃহত্তম ভেরিয়েবল-দৈর্ঘ্যের কলাম (গুলি) চাপায়। আবার, আপনি সেখানে যে পরিমাণ ডেটা সঞ্চয় করেন তা নির্ভর করে না।
এটি মেমরির খরচ এবং কর্মক্ষমতা উপর একটি বড় নেতিবাচক প্রভাব ফেলতে পারে
আর একটি ক্ষেত্রে যেখানে কলামের প্রস্থগুলি ঘোষণার মাধ্যমে বড় পার্থক্য দেখা দিতে পারে তা হল যদি টেবিলটি কখনও এসএসআইএস ব্যবহার করে প্রক্রিয়া করা হয়। পরিবর্তনশীল দৈর্ঘ্যের (বিএলওবিবিহীন) কলামগুলির জন্য বরাদ্দ হওয়া মেমরিটি একটি এক্সিকিউশন ট্রিতে প্রতিটি সারির জন্য স্থির করা হয় এবং কলামগুলির ঘোষিত সর্বাধিক দৈর্ঘ্য অনুসারে যা মেমোরি বাফারগুলির অদক্ষ ব্যবহার করতে পারে (উদাহরণস্বরূপ) । এসএসআইএস প্যাকেজ বিকাশকারী এই বিশ্লেষণটি সর্বোত্তমভাবে সম্পন্ন করে সেখানে প্রয়োগ করা হয়েছে এমন উত্সের চেয়ে ছোট কলামের আকার ঘোষণা করতে পারে।
এসকিউএল সার্ভার ইঞ্জিন নিজেই ফিরে একইরকম কেস হ'ল SORT
অপারেশনগুলির জন্য বরাদ্দ করার জন্য মেমরি অনুদানের গণনা করার সময় এসকিউএল সার্ভার ধরে নেয় যে varchar(x)
কলামগুলি গড়ে x/2
বাইটগুলি গ্রাস করবে ।
যদি আপনার বেশিরভাগ varchar
কলামগুলি এর চেয়ে বেশি পূর্ণ হয় তবে এটি sort
অপারেশনগুলিতে ছড়িয়ে পড়তে পারে tempdb
।
আপনার ক্ষেত্রে যদি আপনার varchar
কলামগুলি 8000
বাইট হিসাবে ঘোষিত হয় তবে প্রকৃতপক্ষে আপনার ক্যোয়ারীর মেমরি বরাদ্দ করা হবে তার চেয়ে অনেক কম সামগ্রী রয়েছে তবে এটির প্রয়োজন নেই যা স্পষ্টভাবে অক্ষম এবং মেমরি অনুদানের জন্য অপেক্ষা করতে পারে।
এটি এখান থেকে ডাউনলোডযোগ্য এসকিউএল ওয়ার্কশপস ওয়েবকাস্ট 1 এর অংশ 2 এ আচ্ছাদিত রয়েছে বা নীচে দেখুন।
use tempdb;
CREATE TABLE T(
id INT IDENTITY(1,1) PRIMARY KEY,
number int,
name8000 VARCHAR(8000),
name500 VARCHAR(500))
INSERT INTO T
(number,name8000,name500)
SELECT number, name, name
FROM master..spt_values
SELECT id,name500
FROM T
ORDER BY number
SELECT id,name8000
FROM T
ORDER BY number