সমস্ত পাঠ্য-ভিত্তিক ক্ষেত্রগুলির জন্য জেনেরিক বার্চার (255) ব্যবহারের কি অসুবিধা রয়েছে?


101

আমি একটি আছে contactsটেবিল যা যেমন ক্ষেত্র রয়েছে postcode, first name, last name, town, country, phone numberইত্যাদি, যার মধ্যে সব সংজ্ঞায়িত করা হয় VARCHAR(255)যদিও এই ক্ষেত্র কেউ কখনও 255 টি অক্ষর থাকার পাসে আসবে। (আপনি যদি ভাবছেন তবে এটি এই কারণ কারণ রুবি অন রেলস মাইগ্রেশন স্ট্রিং ফিল্ডসকে মুলত মানচিত্র দেয় VARCHAR(255)এবং আমি কখনই এটিকে ওভাররাইড করতে বিরত করি না)।

যেহেতু VARCHAR শুধুমাত্র (ক্ষেত্র দৈর্ঘ্য সহ) জমির সত্যিকারের অক্ষরের সংখ্যা সংরক্ষণ করবে, কোনো স্বতন্ত্র সুবিধা (কর্মক্ষমতা বা অন্যথায়) ব্যবহার করে, বলো, হয় VARCHAR(16)বেশি VARCHAR(255)?

অধিকন্তু, এই ক্ষেত্রগুলির বেশিরভাগগুলির উপর সূচী রয়েছে। ক্ষেত্রের উপর একটি বৃহত্তর VARCHAR আকার কি আদৌ সূচকের আকার বা কার্য সম্পাদনকে প্রভাবিত করে?

এফওয়াইআই আমি মাইএসকিউএল 5 ব্যবহার করছি।


4
@ সিজেজোজ, উল্লেখ করে যে কেন সত্যিকারভাবে সহায়তা করে না তা ব্যাখ্যা না করেই গৃহীত উত্তরটি ভুল। যা আরও খারাপ করে তোলে তা হ'ল গ্রহণযোগ্য উত্তর সময়ের সাথে সাথে পরিবর্তন করতে পারে এবং আপনার মন্তব্য লোককে নতুন স্বীকৃত উত্তরটি ভুল বলে ভেবে বিভ্রান্ত করবে ।
গিলি

4
ওপি দৃশ্যত তাদের গ্রহণযোগ্যতা পরিবর্তন করায় @ গিলি আমার মন্তব্য মুছে দিয়েছেন। ভাল কথা, ভবিষ্যতে আমি কোন উত্তরটি সম্পর্কে বলছি এবং কেন করছি তা নির্দেশ করব indicate
সিজেজোজ

এই সদৃশ প্রশ্নের আরও কিছু উত্তর, স্ট্যাকওভারফ্লো.com
জেমস ম্যাকমাহন

উত্তর:


130

স্টোরেজে, VARCHAR(255)নির্দিষ্ট প্রদত্ত সারিতে আপনার প্রয়োজনীয় দৈর্ঘ্যটি সংরক্ষণ করার জন্য যথেষ্ট স্মার্ট , এটি CHAR(255)সর্বদা 255 অক্ষর সংরক্ষণ করবে।

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

যখন আপনার কোয়েরি স্পষ্টভাবে একটি অস্থায়ী টেবিল তৈরি করে, উদাহরণস্বরূপ বাছাই করার সময় বা GROUP BY, এটি প্রচুর স্মৃতি ব্যবহার করতে পারে। আপনি যদি VARCHAR(255)ডেটার জন্য অনেকগুলি ক্ষেত্র ব্যবহার করেন যা এত দীর্ঘ হওয়ার প্রয়োজন হয় না, এটি অস্থায়ী টেবিলটিকে খুব বড় করে তুলতে পারে।

আপনি আরও জানতে চাইবেন যে এই "প্যাডিং আউট" আচরণের অর্থ হ'ল একফাইট বাইট সামগ্রী (যেমন এসকিআই বা ল্যাটিন 1 অক্ষর) দিয়ে স্ট্রিং করা স্ট্রিংয়ের জন্যও ইউটিএফ 8 অক্ষর সেট প্যাডের সাথে অক্ষর প্রতি তিন বাইট প্যাড দেয় declared এবং অনুরূপভাবে utf8mb4 অক্ষর সেট মেমরির অক্ষর প্রতি চার বাইটে স্ট্রিং প্যাড করে দেয়।

সুতরাং VARCHAR(255)কোনও "ইউটিউব না" এর মতো একটি সংক্ষিপ্ত স্ট্রিং সংরক্ষণ করে ডিস্কে 11 বাইট লাগে (দশটি নিম্ন-চরসেট অক্ষর, দৈর্ঘ্যের জন্য একটি বাইট) তবে এটি মেমরিতে 765 বাইট নেয়, এবং এইভাবে টেম্প টেবিল বা সাজানো ফলাফলগুলিতে।

আমি মাইএসকিউএল ব্যবহারকারীদের সাহায্য করেছি যারা অজান্তে 1.5 জিবি টেম্প টেবিলগুলি ঘন ঘন তৈরি করে এবং তাদের ডিস্কের স্থানটি পূরণ করে। তাদের প্রচুর VARCHAR(255)কলাম ছিল যা অনুশীলনে খুব ছোট স্ট্রিং সংরক্ষণ করা হয়েছিল।

আপনি যে ধরণের ডেটা সঞ্চয় করতে চান তার উপর ভিত্তি করে কলামটি নির্ধারণ করা ভাল best অন্যান্য লোকেরা যেমন উল্লেখ করেছে, তেমন অ্যাপ্লিকেশন সম্পর্কিত সীমাবদ্ধতাগুলি প্রয়োগ করার সুবিধা রয়েছে। তবে উপরে বর্ণিত মেমরির বর্জ্য এড়াতে এটির শারীরিক সুবিধা রয়েছে।

অবশ্যই সবচেয়ে দীর্ঘতম ডাক ঠিকানাটি কী তা জানা খুব কঠিন, যার কারণেই অনেক লোক একটি দীর্ঘ চয়ন করেন VARCHARযা অবশ্যই কোনও ঠিকানার চেয়ে দীর্ঘ longer এবং 255 প্রথাগত কারণ এটি VARCHARদৈর্ঘ্যের এক বাইট দিয়ে এনকোড করা যায় এমন একটির সর্বোচ্চ দৈর্ঘ্য । এটি VARCHAR5.0 এর চেয়েও পুরনো মাইএসকিউএলে সর্বোচ্চ দৈর্ঘ্য ছিল।


6
আমি সর্বদা ভেবেছিলাম 255যাতে স্ট্রিংয়ের দৈর্ঘ্যটি একটি একক বাইটে মাপসই হয়
ব্লুরাজা - ড্যানি পিফ্লুঘুফুট

4
@ ব্লুরাজা: এটি সম্ভবত ডাটাবেসের ক্ষেত্রে সত্য ছিল যার অভ্যন্তরীণ ফাইল কাঠামোটি একটি একক বাইটে একটি স্ট্রিংয়ের দৈর্ঘ্য এনকোড করে বা যদি তারা একটি বাইটে সংক্ষিপ্ত স্ট্রিংগুলি এনকোড করে। তবে বেশিরভাগ ডাটাবেসের ক্ষেত্রে এটি আর সত্য নয়।
বিল কারভিন

7
@ ব্লুরাজা: ইনোডিবি নিম্নলিখিত বর্ণের দৈর্ঘ্য সংরক্ষণ করে না, এটি সারিবদ্ধ সমস্ত ক্ষেত্রের জন্য একটি সিরিজ ফিল্ড অফসেট সংরক্ষণ করে। মোট সারির আকার 127 বাইটের চেয়ে কম বা অন্য 2 বাইটের তুলনায় এই ফিল্ড অফসেটগুলি 1 বাইট হতে পারে। Forge.mysql.com/wiki/MySQL_Internals_InnoDB
বিল

6
@ ব্লুরাজা: মাইআইএসএএম (যারা এখনও এটি ব্যবহার করেন) তাদের জন্য ভারচার দৈর্ঘ্য সংরক্ষণ করা হয় এবং এগুলি 1 বা 2 বাইটে সংরক্ষণ করা যায়। তবে: "ইনডেক্স_ড্রেড () বা রেকর্ড_ইন_রেঞ্জের জন্য হ্যান্ডলারের কাছে একটি কী প্রেরণ করার সময়, আমরা জিনিসগুলি আরও সহজ করার জন্য সর্বদা ভিচ্চারের জন্য 2-বাইট দৈর্ঘ্য ব্যবহার করি" " Forge.mysql.com/wiki/MySQL_Internals_MyISAM
বিল

4
একটি প্রশ্ন - বাছাই এবং কোনও ক্ষেত্রের দ্বারা বা গোছানো ক্ষেত্রের নিজেই গ্রুপ?
রোহিত বঙ্গ

24

বর্ণের আকার নির্ধারণের আকার এবং কর্মক্ষমতা বিবেচনা ছাড়াও (এবং সম্ভবত আরও গুরুত্বপূর্ণ, স্টোরেজ এবং প্রসেসিং প্রতি সেকেন্ডে সস্তা হয়ে যায়), তথাপি ভার্চর (255) ব্যবহারের অসুবিধা হ'ল ডেটা অখণ্ডতা

প্রত্যাশিত স্ট্রিংগুলিকে আরডিবিএমএসে প্রবেশ করা থেকে বিরত রাখতে এবং প্রত্যাশার চেয়ে লম্বা (আরও বাইট) বেশি হওয়া ডাটাবেস থেকে মানগুলি পার্সিংয়ের পরে বাফার ওভাররান বা ব্যতিক্রম / ত্রুটিগুলি ঘটানোর পরে স্ট্রিংয়ের সর্বাধিক সীমা নির্ধারণ করা ভাল কাজ

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

দুটি অক্ষর গ্রহণ করার জন্য ক্ষেত্রটি সেট করুন এবং আরডিবিএমএসকে এটির সাথে মোকাবিলা করতে দিন (হয় ত্রুটিযুক্তভাবে তাদের এসকিউএল প্রত্যাখ্যান করে কৃপণভাবে বা কৃপণভাবে) ng

একটি নির্দিষ্ট দৈর্ঘ্য অতিক্রম করার কোনও কারণ নেই এমন প্রকৃত ডেটার উদাহরণ:

  • কানাডিয়ান পোস্টাল কোডগুলি A1A1A1 বিন্যাসের এবং সর্বদা 6 অক্ষর দৈর্ঘ্যে এমনকি সান্তা ক্লজের জন্যও (6 টি অক্ষর স্পষ্টতাকে নির্দিষ্ট করার জন্য স্থানটি বাদ দেয়)।
  • ইমেল ঠিকানাগুলি - @ এর আগে 64 বাইট পর্যন্ত, 255 বাইট পরে tes আর কখনও না, পাছে আপনি ইন্টারনেট ভঙ্গ করবেন না।
  • উত্তর আমেরিকান ফোন নম্বরগুলি কখনই 10 অঙ্কের বেশি হয় না (দেশের কোড বাদে)।
  • উইন্ডোজ চলমান (সাম্প্রতিক সংস্করণ) উইন্ডোতে কম্পিউটারের নামগুলি 63 বাইটের বেশি থাকতে পারে না , যদিও 15 টিরও বেশি প্রস্তাবিত নয় এবং আপনার উইন্ডোজ এনটি সার্ভার ফার্মটি ভেঙে দেবে।
  • রাষ্ট্রের সংক্ষিপ্তসারগুলি 2 টি অক্ষর (উপরে বর্ণিত দেশের কোডগুলির মতো)
  • ইউপিএস ট্র্যাকিং নম্বরগুলি হয় 18-, 12-, 11-, বা 9-অক্ষর দীর্ঘ। 18-অক্ষরের সংখ্যাগুলি "1Z" দিয়ে শুরু হয় এবং 11-অক্ষর সংখ্যাগুলি "টি" দিয়ে শুরু হয় যা আপনাকে আশ্চর্য করে তোলে যে তারা অক্ষর এবং সংখ্যার মধ্যে পার্থক্য না জানলে তারা কীভাবে এই সমস্ত প্যাকেজ সরবরাহ করে।

এবং আরও ...

আপনার ডেটা এবং এর সীমা সম্পর্কে চিন্তা করতে সময় নিন। আপনি যদি স্থপতি, বিকাশকারী বা প্রোগ্রামার হন তবে সর্বোপরি এটি আপনার কাজ

ভার্চারের (255) পরিবর্তে একটি বর্ণচর (এন) ব্যবহার করে আপনি যে সমস্যাটি শেষ করেন সেখানে ব্যবহারকারীরা (শেষ ব্যবহারকারী, প্রোগ্রামার, অন্যান্য প্রোগ্রাম) অপ্রত্যাশিতভাবে দীর্ঘ ডেটা প্রবেশ করে যা পরে আপনার কোডটি ভ্রান্ত করতে ফিরে আসবে।

এবং আমি বলিনি যে আপনি নিজের অ্যাপ্লিকেশন দ্বারা ব্যবহৃত ব্যবসায়িক লজিক কোডেও এই সীমাবদ্ধতা প্রয়োগ করবেন না।


5
কানাডিয়ান পোস্টাল কোডগুলিতে আসলে digit ডিজিট থাকে, মাঝখানে স্থানটি গুরুত্বপূর্ণ এবং মেলিং লেবেলে দেখানো উচিত। উত্তর আমেরিকার ফোন নম্বরগুলিতে কোনও এক্সটেনশন থাকলে 10 টিরও বেশি সংখ্যা থাকতে পারে। আপনি যদি ফোন নম্বর এক্সটেনশানগুলি সঞ্চয় করতে সক্ষম না হন তবে 10 ডিজিট ঠিক আছে, তবে আপনি সম্ভবত আফসোস করবেন।
কিব্বি

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

বেশিরভাগ অ্যাপ্লিকেশনগুলিতে এটি ডেটাবেসে প্রেরণের আগে ডেটা যাচাইকরণ সম্পন্ন হবে ...
কবি

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

4
the design documentation (which surely exists)হাহ। : ডি
ক্যামিলো মার্টিন

14

আমি তোমার সাথে আছি. বিশদ বিবরণের দিকে মনোযোগ দেওয়া গলায় ব্যথা এবং এর মূল্য সীমিত।

একসময়, ডিস্কটি একটি মূল্যবান পণ্য ছিল এবং আমরা এটির অনুকূলকরণের জন্য বুলেট ঘামতাম to স্টোরেজটির দাম হ'ল এক হাজারের একটি ফ্যাক্টর দ্বারা, প্রতিটা বাইট নিচে নেওয়ার জন্য ব্যয় করা সময়কে কম মূল্যবান করে তোলে।

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

যাইহোক, আপনি যদি নিজের আকারগুলি বা আপনার প্রকৃত ডেটা মাপগুলি বেশি পরিমাণে অনুমান করেন তবে আপনি CHAR ক্ষেত্রগুলি দিয়ে স্থান নষ্ট করবেন। ডেটা কম ঘন প্যাক করা হবে (বড় পুনরুদ্ধারের জন্য আরও I / O এর দিকে পরিচালিত করবে)।

সাধারণত, পরিবর্তনশীল ক্ষেত্রগুলিতে একটি আকার রাখার চেষ্টা করার মাধ্যমে পারফরম্যান্সের সুবিধাগুলি সামান্য minor আপনি পার্থক্যটি পরিমাপ করতে পারবেন কিনা তা দেখার জন্য আপনি CHAR (x) এর সাথে তুলনা করে ভ্রচার (255) ব্যবহার করে খুব সহজেই বেঞ্চমার্ক করতে পারেন।

যাইহোক, কখনও কখনও, আমাকে একটি "ছোট", "মাঝারি", "বড়" ইঙ্গিত সরবরাহ করা প্রয়োজন। তাই আমি আকারগুলির জন্য 16, 64 এবং 255 ব্যবহার করি।


13

আজকাল, আমি ভাবতে পারি না যে এটি আসলেই আর গুরুত্বপূর্ণ।

পরিবর্তনশীল দৈর্ঘ্যের ক্ষেত্রগুলি ব্যবহার করার জন্য একটি কম্পিউটেশনাল ওভারহেড রয়েছে, তবে আজ সিপিইউর অতিরিক্ত ব্যবহারের সাথে এটি বিবেচনা করার মতোও নয়। আই / ও সিস্টেমটি এত ধীরে ধীরে ধীরে কার্যকরভাবে ভার্চারগুলি পরিচালনা করতে কোনও গণনামূলক ব্যয় করতে পারে। প্রকৃতপক্ষে, একটি বর্ণের দাম গণনামূলকভাবে সম্ভবত স্থির দৈর্ঘ্যের ক্ষেত্রগুলিতে ভেরিয়েবল দৈর্ঘ্যের ক্ষেত্রগুলি ব্যবহার করে ডিস্কস্পেসের পরিমাণের পরিমাণের চেয়ে বেশি পরিমাণে জয়। আপনার সম্ভবত সবচেয়ে বেশি সারি ঘনত্ব রয়েছে have

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

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

তবে যেহেতু আজ আমাদের কাছে ভারচর ক্ষেত্র রয়েছে, তাই বর্ণাচর (255) ওভারেরচারের একমাত্র মান হ'ল ডিবি বার্চারের (16) চারটির সীমাটি কার্যকর করবে। ডিবি মডেলটি যদি প্রকৃত ডেটা মডেলের প্রকৃত প্রতিনিধি বলে মনে করা হয়, তবে ক্ষেত্রগুলির দৈর্ঘ্য হওয়া মূল্যবান হতে পারে। তবে, যদি এটি "মডেল এবং সঞ্চয়স্থান" না হয়ে কেবল "স্টোরেজ" হয়, তবে যা দরকার তা নেই।

তারপরে আপনাকে কেবল এমন পাঠ্য ক্ষেত্রের মধ্যে পার্থক্য করতে হবে যা সূচিযোগ্য (যেমন বর্ণচক্র) বনাম এমন কিছু (কোনও পাঠ্য বা সিএলওবি ক্ষেত্রের মতো) নয়। সূচকযোগ্য ক্ষেত্রগুলির সূচকে সুবিধার্থে আকারের একটি সীমা থাকে যখন সিএলওবি ক্ষেত্রগুলি (কারণের মধ্যে) না করে।


5

আমার অভিজ্ঞতায়, যদি আপনি 255 টি অক্ষরের একটি ডেটাটাইপ অনুমতি দেন তবে কিছু বোকা ব্যবহারকারী (বা কিছু অভিজ্ঞ পরীক্ষক) আসলে এটি পূরণ করবে।

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

শুরুতে একটি যুক্তিসঙ্গত সীমা বেছে নেওয়া আরও সহজ, তারপরে প্রয়োগ এবং ডাটাবেসের মাধ্যমে এটি প্রয়োগ করুন।


0

আপনার যা প্রয়োজন তার চেয়ে একটু বরাদ্দ দেওয়া ভাল অনুশীলন। ফোন নম্বরগুলি এত বড় হবে না।

একটি কারণ হ'ল আপনি যদি বড় এন্ট্রিগুলির বিরুদ্ধে বৈধতা না দেন তবে সন্দেহ নেই যে কেউ সেখানে থাকা সমস্ত কিছু ব্যবহার করবেন। তারপরে আপনার সারিতে স্থানটি খুব কম চলেছে। আমি মাইএসকিউএল সীমা সম্পর্কে নিশ্চিত নই তবে এমএস এসকিউএল-তে সর্বাধিক সজ্জিত 8060

আরও সাধারণ ডিফল্ট হ'ল 50 ইমো এবং তারপরে যেখানে এটি প্রয়োজনীয়তার প্রমাণিত হয় increase


ধন্যবাদ আমি অবশ্যই এটি ভাল অনুশীলন সম্পর্কে একমত। এটি আমি সম্পাদনার বিষয়ে
সত্যতা

0

কোনও মাইএসকিএল প্রসঙ্গে এটি বর্ণিত কলামগুলিতে সূচীর সাথে কাজ করার সময় গুরুত্বপূর্ণ হয়ে উঠতে পারে, কারণ মাইএসকিএল-এর সর্বোচ্চ থাকে। সূচক-সারি প্রতি 767bytes সীমা।

এর অর্থ হ'ল বেশ কয়েকটি ভারচার 255 কলাম জুড়ে একটি সূচক যুক্ত করার পরে আপনি উপরের উত্তরে উল্লিখিত হিসাবে utf8 বা utf8mb4 কলামগুলিতে বরং আরও দ্রুত / আরও দ্রুত এই সীমাতে পৌঁছতে পারবেন

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