এসকিউএল সার্ভার পাঠ্য প্রকারের বনাম ভারচার ডেটা প্রকার [বন্ধ]


287

আমার পরিবর্তনশীল দৈর্ঘ্যের চরিত্রের ডেটা রয়েছে এবং এসকিউএল সার্ভার (2005) ডাটাবেসে সঞ্চয় করতে চাই। আমি কীভাবে টেক্সট এসকিউএল টাইপ চয়ন করতে পারি বা ভিচারার এসকিউএল টাইপ, কর্মক্ষমতা / পদচিহ্ন / ফাংশন সম্পর্কে ভাল এবং কনস চয়ন করতে পারি সে সম্পর্কে কিছু সেরা অনুশীলন শিখতে চাই।


17
গুগল যদি আপনাকে এখানে পাঠায়: এমএসডিএন এসকিউএল ডেটা টাইপ পৃষ্ঠা সহায়তা করতে পারে।
জেরোইন

উত্তর:


212

আপনি যদি এসকিউএল সার্ভার 2005 বা তার পরে ব্যবহার করছেন তবে ব্যবহার করুন varchar(MAX)textডাটাটাইপ অনুমোদিত নয় এবং নতুন উন্নয়ন কাজের জন্য ব্যবহার করা উচিত নয়। দস্তাবেজগুলি থেকে :

গুরুত্বপূর্ণ

ntext, textএবং imageডেটা প্রকারগুলি মাইক্রোসফ্ট এসকিউএল সার্ভারের ভবিষ্যতের সংস্করণে সরানো হবে। নতুন ডেটা ডেভলপমেন্ট কাজে এই ডেটা প্রকারগুলি ব্যবহার করা এড়িয়ে চলুন এবং বর্তমানে সেগুলি ব্যবহার করে এমন অ্যাপ্লিকেশনগুলিকে সংশোধন করার পরিকল্পনা করুন। ব্যবহারের nvarchar (সর্বোচ্চ) , varchar (সর্বোচ্চ) , এবং varbinary (সর্বোচ্চ) পরিবর্তে।


3
ধন্যবাদ ম্লাদেন, পাঠ্য অবমূল্যায়ন হয়েছে দেখে আমি অবাক হয়েছি। আপনার কাছে কি উল্লেখ করার মতো কোনও অফিসিয়াল ডকুমেন্ট রয়েছে?
জর্জ 2

1
যদিও এটি "অফিসিয়াল" নয় এটি মূল বিষয়গুলি আবরণ করে। পাঠ্যটি প্রকৃতপক্ষে অবমূল্যায়নযুক্ত এবং অনুসন্ধান ও সূচীকরণের মতো ভারচার (সর্বোচ্চ) যা কিছু করে তা সমর্থন করে না। blog.sqlauthority.com/2007/05/26/…
আচিনদা 99

32
এই offcial হিসাবে এটি পায় হিসাবে :) msdn.microsoft.com/en-us/library/ms187993.aspx
Mladen Prajdic

1
শীতল অচিনদা 99 এবং ম্লাদেন প্রজাদিক! আপনি যা সরবরাহ করেছেন তা আমি অনুসন্ধান করছি। :-) আরও একটি প্রশ্ন, আমরা কীভাবে বেছে নিই যে বিভিন্ন পরিস্থিতিতে ভর্চার বা ভর্চার (ম্যাক্স) ব্যবহার করব?
জর্জ 2

1
এটি সম্পর্কে অফিসিয়াল এমএস তথ্য হ্রাস
ফান্ডা

283

TEXTস্ট্রিং ডেটা বড় টুকরা জন্য ব্যবহৃত হয়। যদি ক্ষেত্রের দৈর্ঘ্য একটি নির্দিষ্ট প্রান্তিক ছাড়িয়ে যায় তবে পাঠ্যটি সারির বাইরে সংরক্ষণ করা হবে।

VARCHARসর্বদা সারিতে সঞ্চিত থাকে এবং এতে 8000 টি অক্ষরের সীমা থাকে । আপনি যদি এমন কোনও তৈরি করার চেষ্টা করেন VARCHAR(x)যেখানে x> 8000 , আপনি একটি ত্রুটি পান:

সার্ভার: এমএসজি 131, স্তর 15, রাজ্য 3, লাইন 1

'বর্ণ' টাইপকে দেওয়া আকার () কোনও ডেটা টাইপের জন্য অনুমোদিত সর্বোচ্চ (8000) ছাড়িয়ে যায়

এই দৈর্ঘ্য সীমাবদ্ধতা উদ্বেগ না VARCHAR(MAX)মধ্যে SQL সার্ভার 2005 , যা সারি থেকে বের সঞ্চয় করা হতে পারে, ঠিক TEXT

নোট যে MAXএখানে এক ধরণের ধ্রুবক নয়, VARCHARএবং VARCHAR(MAX)খুব ভিন্ন ধরণের, পরেরটির খুব কাছাকাছি অবস্থিত TEXT

এসকিউএল সার্ভারের পূর্ববর্তী সংস্করণগুলিতে আপনি TEXTসরাসরি অ্যাক্সেস করতে পারবেন না , আপনি কেবল এটি পেতে TEXTPTRএবং এটি READTEXTএবং WRITETEXTকার্যকারিতা ব্যবহার করতে পারেন ।

ইন SQL সার্ভার 2005 আপনি যা করতে পারেন সরাসরি এক্সেস TEXTCOLUMNS (আপনি এখনও করতে বর্ণিত ঢালাই প্রয়োজন যদিও VARCHARতাদের জন্য একটি মান নির্ধারণ করতে)।

TEXT ভাল:

  • আপনার ডাটাবেসে বড় পাঠ্য সংরক্ষণ করার প্রয়োজন হলে
  • আপনি যদি কলামটির মানটি অনুসন্ধান না করেন
  • আপনি যদি এই কলামটি খুব কমই বেছে নেন এবং এতে যোগদান না করেন।

VARCHAR ভাল:

  • আপনি যদি ছোট স্ট্রিং সঞ্চয় করেন
  • আপনি যদি স্ট্রিংয়ের মানটি অনুসন্ধান করেন
  • আপনি যদি সর্বদা এটি নির্বাচন করেন বা এটিতে যোগদান করেন।

দ্বারা নির্বাচন এখানে আমি কোন প্রশ্ন যা কলামের মান জারি মানে।

দ্বারা অনুসন্ধানের এখানে আমি কোনো প্রশ্নের যার ফলাফলের মান উপর নির্ভর করে জারি মানে TEXTবা VARCHARকলাম। এর মধ্যে এটি কোনও JOINবা WHEREশর্তে ব্যবহার করা অন্তর্ভুক্ত ।

যেহেতু TEXTসারি সারি বাইরে সঞ্চিত রয়েছে, TEXTকলামটি জড়িত নয় এমন প্রশ্নগুলি সাধারণত দ্রুত হয়।

কি TEXTভাল জন্য কিছু উদাহরণ :

  • ব্লগ মন্তব্য
  • উইকি পৃষ্ঠাগুলি
  • কোড উত্স

কি VARCHARভাল জন্য কিছু উদাহরণ :

  • ব্যবহারকারীর নাম
  • পৃষ্ঠার শিরোনাম
  • ফাইলগুলির নাম

থাম্বের নিয়ম হিসাবে, আপনার যদি কখনও 200 অক্ষর অতিক্রম করতে আপনার পাঠ্যের মান প্রয়োজন হয় এবং এই কলামটিতে যোগদান ব্যবহার না করেন, ব্যবহার করুন TEXT

অন্যথায় ব্যবহার VARCHAR

দ্রষ্টব্য একই প্রযোজ্য UNICODEসক্রিয় NTEXTএবং NVARCHARপাশাপাশি, যা আপনি উপরের উদাহরণগুলোতে জন্য ব্যবহার করা উচিত।

PPS একই ক্ষেত্রে প্রযোজ্য VARCHAR(MAX)এবং NVARCHAR(MAX)যে SQL সার্ভার 2005+ পরিবর্তে ব্যবহার TEXTএবং NTEXT। আপনি যদি তাদের সর্বদা সারি থেকে সঞ্চিত রাখতে চান তবে large value types out of rowতাদের জন্য আপনাকে সক্ষম sp_tableoptionকরতে হবে।

উপরে এবং এখানে উল্লিখিত হিসাবে , TEXTভবিষ্যতে প্রকাশে অবচয় করা হতে চলেছে:

text in rowবিকল্পের ভবিষ্যতে সংস্করণে সরানো হবে SQL সার্ভার । নতুন উন্নয়ন কাজে এই বিকল্পটি ব্যবহার করা এড়িয়ে চলুন এবং বর্তমানে ব্যবহৃত অ্যাপ্লিকেশনগুলিকে সংশোধন করার পরিকল্পনা করুন text in row। আমরা সুপারিশ করছি যে আপনি ব্যবহার দ্বারা অত্যধিক ডেটা জমা varchar(max), nvarchar(max)অথবা varbinary(max)ধরনের তথ্য। এই ডেটা প্রকারের সারি এবং সারি বহিরাগত আচরণ নিয়ন্ত্রণ করতে, large value types out of rowবিকল্পটি ব্যবহার করুন ।


2
১. "আপনি যদি কলামটির মান অনুসন্ধান না করেন" - আপনি কি "অনুসন্ধান" বলতে চাইছেন তা কি আমাকে দেখাতে পারবেন? আপনি বলতে চাইছেন এই কলামটি নির্বাচন করুন, এই কলামটি অর্ডার করুন, এই কলামটি পছন্দ করুন বা এই কলামটিতে কিছু স্ট্রিং ম্যানিপুলেশন ফাংশন ব্যবহার করছেন?
জর্জ 2

2
২. "ভর্চার সর্বদা সারিতে সঞ্চিত থাকে এবং এর সীমা 8000 টি অক্ষর থাকে" " - দুঃখিত আমি তোমার সাথে একমত নই VARCHAR 8000 এর চেয়ে দীর্ঘ হতে পারে এবং 8000 এর বেশি হলে, VARCHAR কলাম ব্যতীত অন্য কোনও স্থানে সংরক্ষণ করা হবে। কোন মন্তব্য?
জর্জ 2

1
৩. ম্লাদেন প্রজাদিক এই থ্রেডে উল্লেখ করেছেন, পাঠ্য প্রকারটি হ্রাস করা হয়েছে, তবে আমি কোনও নথি এটিকে কভার করি না। আপনার কি কোনও নথি আছে এটি আবৃত?
জর্জ 2

2
কুল কাসনসুই! আপনি এত জ্ঞাত! :-) আরও একটি প্রশ্ন - "এটি অবশ্যই ভ্রচার (ম্যাক্স) নিয়ে উদ্বেগ প্রকাশ করে না, যা এসকিউএল সার্ভার ২০০৫ এর জন্য পাঠ্যের প্রতিশব্দ।" "এই" মানে কি?
জর্জ 2

"এটি অবশ্যই ভ্রূচার (ম্যাক্স) নিয়ে উদ্বেগ প্রকাশ করে না, যা এসকিউএল সার্ভার ২০০৫-এর পাঠ্যক্রমের প্রতিশব্দ। - আপনার কাছে এমন কোনও নথি রয়েছে যা বলে যে এসকিউএল সার্ভার ২০০৫-এ টেক্সটটি ভ্রচারের মতোই? আমি কিছু অনুসন্ধান করেছি কিন্তু অফিসিয়াল নথি খুঁজে পাই না can :-)
জর্জে 2

41

এসকিউএল সার্ভারে ২০০৫ সালে নতুন ডেটাটাইপগুলি চালু করা হয়েছিল: varchar(max)এবং nvarchar(max) তাদের পুরাতন পাঠ্য প্রকারের সুবিধা রয়েছে : এগুলিতে অপ্রতি 2 জিবি ডেটা থাকতে পারে তবে তাদের বেশিরভাগ সুবিধা varcharএবং এর রয়েছে nvarchar। এই সুবিধার মধ্যে স্ট্রিং ম্যানিপুলেশন ফাংশন যেমন সাবস্ট্রিং () ব্যবহার করার ক্ষমতা রয়েছে।

এছাড়াও, ভার্চার (সর্বোচ্চ) সারণীর (ডিস্ক / মেমরি) স্পেসে সংরক্ষণ করা হয় যখন আকারটি 8Kb এর নীচে থাকে। আপনি যখন ক্ষেত্রটিতে আরও ডেটা রাখবেন, কেবলমাত্র এটি টেবিলের স্থানের বাইরে সংরক্ষণ করা হবে। টেবিলের স্পেসে থাকা ডেটা (সাধারণত) দ্রুত পুনরুদ্ধার করা হয়।

সংক্ষেপে, পাঠ্যটি কখনই ব্যবহার করবেন না কারণ এর চেয়ে আরও ভাল বিকল্প রয়েছে: (এন) বর্ণচর্চা (সর্বোচ্চ)। এবং কেবলমাত্র বারচার (সর্বাধিক) ব্যবহার করুন যখন একটি নিয়মিত বার্চার যথেষ্ট বড় না হয়, অর্থাত্ যদি আপনি স্ট্রিংয়ের যে স্ট্রিংটি সংরক্ষণ করতে চান তা 8000 অক্ষরের বেশি হয়ে যাবে।

যেমনটি উল্লেখ করা হয়েছিল, আপনি পাঠ্য ডেটাটাইপটিতে সাবস্ক্রিংটি ব্যবহার করতে পারেন তবে কেবল যতক্ষণ TEXT ক্ষেত্রে 8000 টিরও কম অক্ষর থাকবে।


1
ধন্যবাদ এডোড, আপনি পুরো পুরো উত্তর দিয়েছিলেন ভ্রচারটি কতটা ভাল, তবে কখন ভোচারার ব্যবহার করবেন এবং কখন টেক্সট ব্যবহার করবেন সে সম্পর্কে কোনও মন্তব্য বা ধারণা? আমার প্রশ্নটি 2 ইস্যু থেকে 1 টি পছন্দ করা নিয়ে। :-)
জর্জে 2

1
প্রকৃতপক্ষে, এমএস এসকিউএল সার্ভার ২০০৫-এ আপনি টেক্সট কলামগুলিতেও সাবস্ক্রিং এবং অন্যান্য ফাংশন ব্যবহার করতে পারেন।
কাসনসুই

1
ধন্যবাদ কাসনোই! দেখে মনে হচ্ছে যে টেক্সট হ্রাস করা হয়েছে। আরও একটি প্রশ্ন, আমরা কীভাবে বেছে নিই যে বিভিন্ন পরিস্থিতিতে ভর্চার বা ভর্চার (ম্যাক্স) ব্যবহার করব?
জর্জ 2

1
কেবলমাত্র বারচার (সর্বাধিক) ব্যবহার করুন যখন নিয়মিত বারচার যথেষ্ট বড় না হয় (8 কেবি সবার জন্য যথেষ্ট হওয়া উচিত;)
এডোসফট

7

এমএস ২০০৮-এ কিছু বড় পরিবর্তন হয়েছে -> কোন ডেটা ব্যবহার করতে হবে সে সম্পর্কে সিদ্ধান্ত নেওয়ার সময় নিম্নলিখিত নিবন্ধটি বিবেচনা করা উচিত। http://msdn.microsoft.com/en-us/library/ms143432.aspx

প্রতি বাইট

  1. ভারচার (সর্বাধিক), বর্ণের (সর্বোচ্চ), এক্সএমএল, পাঠ্য বা চিত্র কলাম 2 ^ 31-1 2 ^ 31-1
  2. এনভারচর (সর্বাধিক) কলাম 2 ^ 30-1 2 ^ 30-1

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