এই প্রশ্নটি এসকিউএল সার্ভার সূচকগুলির কার্যকারিতা সম্পর্কে একটি কভারিং সূচক varchar(2000)
হিসাবে একটি হিসাবে INCLUDE
।
আমি ধীর এবং অস্থির ডেটাবেস অ্যাপ্লিকেশনটিতে কর্মক্ষমতা উন্নত করার চেষ্টা করছি। কিছু কিছু ক্ষেত্রে, ডাটা মত multple স্ট্রিং অপারেশন সহ প্রশ্নের দিয়ে বড় varchar স্ট্রিং মাধ্যমে অ্যাক্সেস করা হয়, SUBSTRING()
, SPACE()
, এবং DATALENGTH()
। এখানে অ্যাক্সেসের সরলীকৃত উদাহরণ রয়েছে;
update fattable set col3 =
SUBSTRING(col3,1,10) + '*' +
SUBSTRING(col3,12,DATALENGTH(col3)-12)
from fattable where substring(col3,10,1) = 'A' and col2 = 2
স্কিমাটি দেখতে এরকম দেখাচ্ছে:
CREATE TABLE [dbo].[FatTable](
[id] [bigint] IDENTITY(1,1) NOT NULL,
[col1] [nchar](12) NOT NULL,
[col2] [int] NOT NULL,
[col3] [varchar](2000) NOT NULL, ...
বৃহত পাঠ্য কলামে একটি আচ্ছাদন ক্ষেত্র সহ নিম্নলিখিত সূচকটি সংজ্ঞায়িত করা হয়েছে।
CREATE NONCLUSTERED INDEX [IndexCol2Col3] ON [dbo].[FatTable] ( [col2] ASC )
INCLUDE( [col3] )
আমি যা পড়েছি তা থেকে কোনও সূচকে বড় ডেটা ক্ষেত্র স্থাপন করা খারাপ। আমি http://msdn.microsoft.com/en-us/library/ms190806.aspx সহ বেশ কয়েকটি নিবন্ধ পড়ছি যা সূচকের কার্য সম্পাদনে পেজিং এবং ডিস্ক আকারের প্রভাব নিয়ে আলোচনা করে। এটি বলা হচ্ছে, ক্যোয়ারী প্ল্যান অবশ্যই প্রচ্ছদ সূচকটি ব্যবহার করে। সিস্টেম লোডের ক্ষেত্রে এটি আসলে আমার কতটা ব্যয় করে তা নির্ধারণ করার মতো পর্যাপ্ত তথ্য আমার কাছে নেই। আমি জানি যে সামগ্রিকভাবে, সিস্টেমটি খারাপভাবে পারফর্ম করছে এবং আমি উদ্বিগ্ন যে এটি একটি বিষয়। প্রশ্নাবলী:
এই
varchar(2000)
কলামটি সূচীতে স্থাপন করাINCLUDE
কি কোনও ভাল ধারণা?INCLUDE
ক্ষেত্রগুলি যেহেতু পাতা নোডে সংরক্ষিত রয়েছে, তাই তাদের কি খুব বেশি প্রভাবের সূচকের কার্যকারিতা রয়েছে?
আপডেট: চমৎকার জবাবের জন্য ধন্যবাদ! এটি কিছু উপায়ে একটি অন্যায্য প্রশ্ন - যেমন আপনি বলছেন, আসল পরিসংখ্যান এবং প্রোফাইল দেওয়া ছাড়া কোনও সঠিক সঠিক উত্তর নেই। অনেক পারফরম্যান্স ইস্যুর মতো, আমি অনুমান করি উত্তরটি "এটি নির্ভর করে"।
VARCHAR(2000)
যা সাধারণত দশটি অক্ষর সঞ্চয় করে তা হ'ল একটি জিনিস; রেকর্ডে একটি শক্ত 2,000 বাইট অন্য কিছু।