ভর্চার এবং চারের মধ্যে পার্থক্য কী?


366

মাইএসকিউএল-তে ভর্চার এবং চরের মধ্যে পার্থক্য কী?

আমি এমডি 5 হ্যাশগুলি সংরক্ষণ করার চেষ্টা করছি।


15
এমডি 5 হ্যাশটিতে সর্বদা 32 টি অক্ষর থাকে। সুতরাং আপনার কর্মক্ষমতা সর্বাধিকতর করতে CHAR (32) ব্যবহার করুন যেহেতু CHAR দৈর্ঘ্য নির্ধারিত (CHAR এবং VARCHAR এর মধ্যে পার্থক্য সম্পর্কে আরও তথ্যের জন্য নীচের উত্তর দেখুন)।
আগস্টিন

উত্তর:


361

VARCHAR পরিবর্তনশীল দৈর্ঘ্য।

CHAR দৈর্ঘ্য স্থির।

আপনার বিষয়বস্তু যদি স্থির আকার হয় তবে আপনি আরও ভাল পারফরম্যান্স পাবেন CHAR

বিস্তারিত ব্যাখ্যার জন্য CHAR এবং VARCHAR প্রকারের মাইএসকিউএল পৃষ্ঠাটি দেখুন (মন্তব্যগুলিও অবশ্যই পড়ুন)


51
@ স্টিভেন: যখন আনন "আপনার বিষয়বস্তু একটি নির্দিষ্ট আকার" বলছেন এর অর্থ আপনার টেবিলের সারিগুলিতে সমস্ত স্থির আকারের ক্ষেত্র থাকতে হবে। আপনি যদি একটি ক্ষেত্রের VARCHAR এর বিপরীতে CHAR ব্যবহার করেন তবে আপনি কোনও কার্যকারিতা উন্নতি করতে পারবেন না, তবে টেবিলটিতে অন্যান্য ক্ষেত্র রয়েছে যা VARCHAR।
মার্কো ডেমাইও

2
কোনও চর ডেটাটাইপ পারফরম্যান্স যুক্ত করে না ... কোয়েরি চালানোর সময় বর্গক্ষেত্র একটি কার্যকরকরণ পরিকল্পনা উত্পন্ন করবে। ধরুন এখানে 2 টি কলাম চারকোল চর (2000) এবং বর্ণচর্চা বর্ণাচর (2000) রয়েছে execution এইভাবে এটি ছড়িয়ে পড়ে টেম্প ডিবিতে। সুতরাং চর ব্যবহার করা পারফরম্যান্সের পক্ষে ভাল
ভিনিশ

1
ভর্চার (এন) এর পরাকীমের মানটির অর্থ কী?
শিবাগামী নাম্বি

@ মারকো ডেমাইও আপনি কি এর পেছনের কারণ জানেন?
দেহান ডি ক্রোস

1
@ jdc91: একটি কর্মক্ষমতা বাড়ানোর জন্য পুরো সারিকে স্থির-প্রস্থ করতে হবে। মাইএসকিউএল সেই ধরণের সারণীতে স্থানের প্রয়োজনীয়তা এবং সারিগুলির অফসেট গণনা করে সুবিধা অর্জন করে।
মার্কো ডেমাইও

225

CHAR

  1. নির্দিষ্ট দৈর্ঘ্যের অক্ষরের স্ট্রিং মান সংরক্ষণ করতে ব্যবহৃত হয় ।
  2. সর্বোচ্চ নম্বর। বর্ণের ডেটা টাইপ করতে পারে 255 অক্ষর
  3. এটি VARCHAR এর চেয়ে 50% দ্রুত
  4. স্থির মেমরি বরাদ্দ ব্যবহার করে ।

VARCHAR

  1. পরিবর্তনশীল দৈর্ঘ্যের আলফানিউমেরিকাল ডেটা সঞ্চয় করতে ব্যবহৃত হয় ।
  2. এই ডেটা টাইপটি সর্বোচ্চ সর্বোচ্চ ধারণ করতে পারে
    • প্রাক-মাইএসকিউএল 5.0.3: 255 টি অক্ষর
    • পোস্ট-মাইএসকিউএল 5.0.3: 65,535 টি অক্ষর সারিটির জন্য ভাগ করা হয়েছে।
  3. এটি CHAR এর চেয়ে ধীর
  4. গতিশীল মেমরি বরাদ্দ ব্যবহার করে ।

3
আমি কিছুটা অবাক হয়েছি যে এই উত্তরটি প্রায়শই উত্সাহিত করা হয়েছে। মাইএসকিউএল ডকুমেন্টেশনটি জানিয়েছেValues in VARCHAR columns are variable-length strings. The length can be specified as a value from 0 to 255 before MySQL 5.0.3, and 0 to 65,535 in 5.0.3 and later versions.
ড্রয়েডস

2
আপনি
চরমেও

44
এই 50% দ্রুত ভিত্তিক কি? 50% দ্রুত কি করতে হবে? কোন পরিস্থিতিতে? এবং স্ট্যাটিক মেমরি বরাদ্দ বনাম এই প্রসঙ্গে গতিশীল বলতে কী বোঝ?
মার্টিন স্মিথ

4
@ মার্টিনস্মিথ আমিও একই কথা জিজ্ঞাসা করছিলাম .. তথ্য সঠিক মনে করবেন না। asktom.oracle.com/pls/asktom/…
ওজগুর বার

2
-1; এখানে পারফরম্যান্সের দাবিগুলি অস্পষ্ট এবং অসমর্থিত, মেমরি বরাদ্দ কৌশল (এবং কেন এটি গুরুত্বপূর্ণ) এর পার্থক্যটি প্রকাশিত হয় নি, এবং বর্ণাচার "আলফানিউমেরিক ডেটা" সঞ্চয় করার দাবিটি কিছুটা অদ্ভুত; ভারচার কলামগুলি অবশ্যই অ-অক্ষরীয় অক্ষরগুলি সঞ্চয় করতে পারে!
মার্ক

122

CHAR Vs VARCHAR

CHAR স্থির দৈর্ঘ্যের আকারের
জন্য ব্যবহৃত হয় চলক দৈর্ঘ্যের আকারের পরিবর্তনশীল জন্য VARCHAR ব্যবহৃত হয়।

যেমন

Create table temp
(City CHAR(10),
Street VARCHAR(10));

Insert into temp
values('Pune','Oxford');

select length(city), length(street) from temp;

আউটপুট হবে

length(City)          Length(street)
10                    6

উপসংহার: স্টোরেজ স্পেসটি দক্ষতার সাথে ব্যবহারের জন্য ভেরিয়েবলের দৈর্ঘ্য পরিবর্তনশীল হলে পরিবর্তে CHAR ব্যবহার করতে হবে


4
শহর = চর (10), রাস্তার = বর্ণা (10), শহর = পুনে, রাস্তার = অক্সফোর্ড, দৈর্ঘ্য (শহর) = 4, দৈর্ঘ্য (রাস্তায়) = 6
আবদুলওয়াদুদ

2
এই ক্যোয়ারী (দৈর্ঘ্য (শহর), টেম্প থেকে দৈর্ঘ্য (রাস্তায়)) নিম্নোক্ত আউটপুটটি mysql 5.7 mysql এ দিচ্ছে> টেম্পের থেকে দৈর্ঘ্য (শহর), দৈর্ঘ্য (রাস্তায়) নির্বাচন করুন; + -------------- + ---------------- + | দৈর্ঘ্য (শহর) | দৈর্ঘ্য (রাস্তায়) | + -------------- + ---------------- + | 4 | 6 | + -------------- + ---------------- + 1 সারি সেট (0.00 সেকেন্ড)
জসবীর রাওয়াল

68

একটি CHAR(x)কলামে ঠিক x অক্ষর থাকতে পারে।
একটি VARCHAR(x)কলাম থাকতে পারে আপ x অক্ষর।

যেহেতু আপনার এমডি 5 হ্যাশগুলি সর্বদা একই আকারের হবে, আপনার সম্ভবত একটি ব্যবহার করা উচিত CHAR

তবে, আপনাকে প্রথমে এমডি 5 ব্যবহার করা উচিত নয়; এটি দুর্বলতাগুলি জানে।
পরিবর্তে SHA2 ব্যবহার করুন।
যদি আপনি পাসওয়ার্ডগুলি হ্যাশ করে থাকেন তবে আপনার বিসিপি ব্যবহার করা উচিত।


44
"একটি CHAR (x) কলামে ঠিক x অক্ষর থাকতে পারে। প্রকৃতপক্ষে, আপনি x অক্ষরের চেয়ে কম সংখ্যক ডেটা যুক্ত করতে পারেন তবে আমার মনে হয় আপনি এটি সর্বদা পর্দার আড়ালে 10 টি চরিত্রের স্মৃতি সরবরাহ করেন।
ড্যান ডাব্লু

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

1
ধরে নিই যে CHAR (x) কলামটি x অক্ষরকে ঠিকঠাক প্রয়োগ করে না তবে স্থির আকারের ডেটার জন্য এমনকি ভ্রচার (x) এর উপরে এটি ব্যবহার করার কোনও কারণ আছে কি?
নেভারইন্ডিংউইউ

11

মাইএসকিউএল-তে ভর্চার এবং চরের মধ্যে পার্থক্য কী?

ইতিমধ্যে প্রদত্ত উত্তরের জন্য আমি যুক্ত করতে চাই যে ওলটিপি সিস্টেমে বা নিয়মিত সিস্টেমে ঘন ঘন আপডেটগুলি আপডেটের সময় CHARসম্ভাব্য VARCHARকলাম বিভাজনের কারণে এমনকি পরিবর্তনশীল আকারের কলামগুলির জন্য ব্যবহার বিবেচনা করে ।

আমি এমডি 5 হ্যাশগুলি সংরক্ষণ করার চেষ্টা করছি।

সুরক্ষা সত্যিই গুরুত্বপূর্ণ যদি MD5 হ্যাশ সেরা পছন্দ নয়। তবে, আপনি যদি কোনও হ্যাশ ফাংশন ব্যবহার করেন, BINARYপরিবর্তে এর জন্য টাইপ বিবেচনা করুন (যেমন MD5 16 বাইট হ্যাশ তৈরি করবে, তাই হেক্স অঙ্কগুলি উপস্থাপনকারী 32 টি অক্ষরের BINARY(16)পরিবর্তে যথেষ্ট হবে CHAR(32)This এটি আরও স্থান সাশ্রয় করবে এবং কার্যকারিতা কার্যকর হবে)।


চিন্তার এই ট্রেন অনুসরণ করে, আমি ব্যবসায়ের আইডিগুলির জন্য CHAR ব্যবহার করব যা পাঠযোগ্যতা বনাম দক্ষতার জন্য। আমি এখনও বিগিন্ট প্রাথমিক কীগুলি ব্যবহার করব।
আর্কিমিডিস ট্রাজানো

9

বর্ণচক্র ঘোষিত দৈর্ঘ্যের চেয়ে কম হলে প্রচ্ছন্ন স্থানগুলি কেটে দেয়, যখন চরটি হবে না। চর স্পেস প্যাড করবে এবং সর্বদা ঘোষিত দৈর্ঘ্যের দৈর্ঘ্য হবে। দক্ষতার দিক থেকে, বর্ণচর আরও পারদর্শী কারণ এটি আরও সমন্বয় করার জন্য অক্ষরকে ছাঁটাই করে। তবে আপনি যদি চরের সঠিক দৈর্ঘ্য জানেন তবে চরটি আরও কিছুটা গতিতে চালিত হবে।


7

বর্তমানে বেশিরভাগ আরডিবিএমএসে এগুলি প্রতিশব্দ। তবে যে সমস্ত সিস্টেমে এখনও পার্থক্য রয়েছে, তাদের জন্য একটি CHAR ক্ষেত্র একটি নির্দিষ্ট-প্রস্থের কলাম হিসাবে সংরক্ষণ করা হয়। যদি আপনি এটিকে CHAR (10) হিসাবে সংজ্ঞায়িত করেন, তবে টেবিলে 10 টি অক্ষর লেখা হয়, যেখানে "প্যাডিং" (সাধারণত স্পেসস) ডেটা ব্যবহার না করে এমন কোনও স্থান পূরণ করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, "বব" সংরক্ষণ করা ("বব" +7 স্পেস) হিসাবে সংরক্ষণ করা হবে। একটি ভর্চার (ভেরিয়েবল ক্যারেক্টার) কলাম বলতে বোঝায় যে কোনও CHAR কলামের অতিরিক্ত স্থান নষ্ট না করে ডেটা সঞ্চয় করা।

সর্বদা হিসাবে, উইকিপিডিয়া আরও জোরে কথা বলে।


5

CHAR একটি নির্দিষ্ট দৈর্ঘ্যের ক্ষেত্র; VARCHAR একটি পরিবর্তনশীল দৈর্ঘ্যের ক্ষেত্র। আপনি যদি নামের মতো বুননীয় পরিবর্তনশীল দৈর্ঘ্যের সাথে স্ট্রিংগুলি স্টোর করে রাখেন, তবে একটি VARCHAR ব্যবহার করুন, যদি দৈর্ঘ্য সর্বদা একই থাকে তবে একটি CHAR ব্যবহার করুন কারণ এটি কিছুটা বেশি আকারের দক্ষ এবং কিছুটা দ্রুতও।


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

1

CHAR নির্ধারিত দৈর্ঘ্য এবং VARCHAR পরিবর্তনশীল দৈর্ঘ্য। CHAR সর্বদা এন্ট্রি প্রতি একই পরিমাণ স্টোরেজ স্পেস ব্যবহার করে, যখন VARCHAR কেবল আসল পাঠ্য সংরক্ষণের জন্য প্রয়োজনীয় পরিমাণ ব্যবহার করে।


1

চরটি একটি স্থির দৈর্ঘ্যের অক্ষর ডেটা টাইপ, বর্ণচর একটি পরিবর্তনশীল দৈর্ঘ্যের অক্ষর ডেটা টাইপ।

চরটি একটি স্থির দৈর্ঘ্যের ডেটা ধরণের হওয়ায়, এই কলামটির জন্য চরের মান সঞ্চয়স্থানের আকার সর্বাধিক আকারের সমান। যেহেতু বার্চর একটি পরিবর্তনশীল-দৈর্ঘ্যের ডেটা ধরণের, তাই ভার্চার মানের স্টোরেজ আকারটি প্রবেশ করা তথ্যের প্রকৃত দৈর্ঘ্য, এই কলামটির সর্বোচ্চ আকার নয়।

আপনি কলের ব্যবহার করতে পারেন যখন কোনও কলামে ডেটা এন্ট্রি একই আকারের প্রত্যাশিত হয়। যখন কোনও কলামে ডেটা এন্ট্রিগুলি আকারে যথেষ্ট পরিমাণে পৃথক হবে বলে আশা করা হয় আপনি বার্চর ব্যবহার করতে পারেন।


0

হাই পারফরম্যান্স মাইএসকিউএল বই অনুসারে :

VARCHAR ভেরিয়েবল-দৈর্ঘ্যের অক্ষরের স্ট্রিংগুলি সংরক্ষণ করে এবং এটি সর্বাধিক সাধারণ স্ট্রিং ডেটা টাইপ। এটির জন্য স্থির দৈর্ঘ্যের ধরণের চেয়ে কম সঞ্চয় স্থান প্রয়োজন হতে পারে, কারণ এটি কেবলমাত্র তার প্রয়োজনীয় স্থানটি ব্যবহার করে (যেমন, সংক্ষিপ্ত মান সংরক্ষণের জন্য কম স্থান ব্যবহৃত হয়)। ব্যতিক্রমটি ROW_FORMAT = FIXED দিয়ে তৈরি একটি মাইআইএসএএম টেবিল, যা প্রতিটি সারির জন্য ডিস্কে একটি নির্দিষ্ট পরিমাণ স্থান ব্যবহার করে এবং এভাবে স্থান নষ্ট করতে পারে। VARCHAR পারফরম্যান্সে সহায়তা করে কারণ এটি স্থান সংরক্ষণ করে।

CHAR স্থির দৈর্ঘ্য: মাইএসকিউএল সর্বদা নির্দিষ্ট বর্ণের সংখ্যার জন্য পর্যাপ্ত স্থান বরাদ্দ করে। একটি CHAR মান সংরক্ষণ করার সময়, মাইএসকিউএল যে কোনও পিছনের স্থান সরিয়ে দেয়। (এটি মাইএসকিউএল ৪.১-এ এবং মার্চীন সংস্করণগুলিতেও সত্য ছিল and CHAR এবং VAR CHAR যৌক্তিকরূপে অভিন্ন ছিল এবং কেবলমাত্র স্টোরেজ ফর্ম্যাটেই পৃথক ছিল Values) তুলনা করার জন্য প্রয়োজনীয় মূল্যবোধগুলি ফাঁকা জায়গায় প্যাড করা হয়।


2
" ভোচারার পারফরম্যান্সে সহায়তা করে কারণ এটি স্থান বাঁচায় " এটি স্থান বাঁচায়, হ্যাঁ, তবে এটি পারফরমেন্সকে নেতিবাচকভাবে প্রভাবিত করে না? VARCHARগতিশীলভাবে মেমরির বরাদ্দ করা দরকার এবং যখন প্রয়োজন হয় ঠিক তখন বিপরীতে কর্মক্ষমতা হ্রাস করতে হয় CHAR?
স্পিক্যাট্রিক্স

@ স্পিকাট্রিক্স নির্ভর করে। যদি ভিআচআরএআর এর মানগুলি প্রায়শই ছোট হয় তবে এন বাইট পর্যন্ত হতে পারে তবে গতিশীল বরাদ্দ একটি উল্লেখযোগ্য পরিমাণে জায়গা এবং I / O সঞ্চয় করতে পারে যা প্রচুর ডেটার জন্য আরও পারফরম্যান্স। CHAR মানগুলি দৈর্ঘ্যে প্রায় সমান এবং আরও পারফরম্যান্ট হবে। পড়া বনাম লেখাগুলি সম্ভবত একটি পার্থক্য করে।
অ্যান্ড্রু

-4

Char একটি নির্দিষ্ট দৈর্ঘ্য রয়েছে (2000 টি অক্ষর সমর্থন করে), এটি হ'ল অক্ষরের জন্য একটি ডেটা টাইপ

Varchar একটি পরিবর্তনশীল দৈর্ঘ্য রয়েছে (4000 অক্ষর সমর্থন করে)


-1; এই সংখ্যাগুলি মাইএসকিউএল-এর জন্য সঠিক নয়। (আমি মনে করি তারা ওরাকল এর পক্ষে হতে পারে?)
মার্ক

-5

চর বা বার্চার- এটি টেক্সচুয়াল ডেটা প্রবেশের জন্য ব্যবহৃত হয় যেখানে বন্ধনীতে দৈর্ঘ্য নির্দেশ করা যেতে পারে যেমন- নাম চর (20)


এটি মূল প্রশ্নের সমাধান করে না। ওপি প্রকারের সিনট্যাক্স এবং উদ্দেশ্য নয়, প্রকারের মধ্যে ব্যবহারিক পার্থক্য জিজ্ঞাসা করছে। এছাড়াও (এবং )বন্ধনী নয়, বন্ধনী নয়।
2mac

@ 2mac আপনার চূড়ান্ত বাক্যটি কেবল আমেরিকান ইংরাজির ক্ষেত্রেই সত্য; ব্রিটেনে আমরা কল করি (এবং )বন্ধনীগুলি, এবং অনেক ব্রিটিশ সম্ভবত এও বুঝতে পারে না যে ইংরেজির উপভাষাগুলি রয়েছে যেখানে "বন্ধনী" শব্দটি একটি বিরাম চিহ্নকে বোঝাতে পারে। "বন্ধনী" থেকে "বন্ধনী" পছন্দ করার জন্য একটি শক্তিশালী কেস তৈরি করা দরকার - এটি সম্ভবত ভারসাম্যের ভিত্তিতে প্রোগ্রামারদের আন্তর্জাতিক শ্রোতাদের লক্ষ্য করার সময় সর্বাধিক স্পষ্ট বিকল্প - তবে "বন্ধনী" ঠিক ভুল হওয়ার চেয়ে এটি আরও জটিল কেস।
মার্ক

-11

চর:

  • অক্ষর এবং সংখ্যা উভয়কেই সমর্থন করে।
  • 2000 অক্ষর সমর্থন করে।
  • নির্দিষ্ট দৈর্ঘ্যের.

ভারচার:

  • অক্ষর এবং সংখ্যা উভয়কেই সমর্থন করে।
  • 4000 টি অক্ষর সমর্থন করে।
  • পরিবর্তনশীল দৈর্ঘ্য.

কোন মন্তব্য......!!!!

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