Utf8mb4 ব্যবহার করে একটি VARCHAR (255) ক্ষেত্রে একটি অনন্য সূচক যুক্ত করার চেষ্টা করার সময় আমরা এই সমস্যার মুখোমুখি হয়েছি। যদিও সমস্যাটি ইতিমধ্যে এখানে ভালভাবে বর্ণিত হয়েছে, আমরা কীভাবে এটি সমাধান করেছি এবং এর সমাধান করেছি তার জন্য আমি কিছু ব্যবহারিক পরামর্শ যুক্ত করতে চেয়েছিলাম।
Utf8mb4 ব্যবহার করার সময়, অক্ষরগুলি 4 বাইট হিসাবে গণনা করা হয়, যেখানে utf8 এর অধীনে তারা 3 বাইট হিসাবে থাকতে পারে। ইনোডিবি ডাটাবেসের একটি সীমা রয়েছে যা সূচকগুলিতে কেবল 767 বাইট থাকতে পারে। সুতরাং utf8 ব্যবহার করার সময়, আপনি 255 টি অক্ষর (767/3 = 255) সঞ্চয় করতে পারেন তবে utf8mb4 ব্যবহার করে আপনি কেবল 191 টি অক্ষর (767/4 = 191) সঞ্চয় করতে পারেন।
আপনি VARCHAR(255)
utf8mb4 ব্যবহার করে ক্ষেত্রগুলির জন্য নিয়মিত সূচকগুলি যুক্ত করতে একেবারেই সক্ষম , তবে কী হয় সূচকের আকারটি স্বয়ংক্রিয়ভাবে ১৯১ টি অক্ষরে ছিন্ন হয়ে যায় - unique_key
এখানে যেমন :
এটি ঠিক আছে, কারণ নিয়মিত সূচকগুলি কেবলমাত্র আপনার ডেটা দিয়ে আরও দ্রুত মাইএসকিউএল অনুসন্ধানে সহায়তা করতে ব্যবহৃত হয়। পুরো ক্ষেত্রটি সূচকের প্রয়োজন হয় না।
সুতরাং, মাইএসকিউএল নিয়মিত সূচকগুলির জন্য সূচকে স্বয়ংক্রিয়ভাবে ছাঁটাই করে, কিন্তু অনন্য সূচীর জন্য এটি করার চেষ্টা করার সময় একটি স্পষ্ট ত্রুটি ফেলে দেয়? ওয়েল, মাইএসকিউএলটি যদি সন্নিবেশ করা বা আপডেট করা মান ইতিমধ্যে বিদ্যমান রয়েছে তা নির্ধারণ করতে সক্ষম হওয়ার জন্য এটির কেবলমাত্র পুরো অংশটিই সূচীকরণ করা প্রয়োজন, কেবল এটির একটি অংশ নয়।
দিনের শেষে, আপনি যদি কোনও ক্ষেত্রে একটি অনন্য সূচি রাখতে চান, তবে ক্ষেত্রের পুরো বিষয়বস্তু অবশ্যই সূচকে মাপসই করা উচিত। Utf8mb4 এর জন্য, এর অর্থ আপনার ভিচারার ফিল্ডের দৈর্ঘ্য 191 টি অক্ষর বা তারও কম হবে। যদি আপনার এই টেবিল বা ক্ষেত্রের জন্য utf8mb4 এর প্রয়োজন না হয় তবে আপনি এটিকে utf8 এ ফেলে দিতে পারেন এবং আপনার 255 দৈর্ঘ্যের ক্ষেত্র রাখতে সক্ষম হতে পারেন।