জোনএহ কীভাবে লিখতে হবে তার অংশটি খুব ভালভাবে কভার করেছে। আরও একটি উল্লেখযোগ্য সমস্যা রয়েছে যা অবশ্যই উল্লেখ করতে হবে, যা এই জাতীয় ক্যোয়ারির পারফরম্যান্স বৈশিষ্ট্য। আসুন এখানে এটি পুনরাবৃত্তি করুন (ওরাকলকে অভিযোজিত):
SELECT EmployeeName FROM EmployeeTable WHERE LENGTH(EmployeeName) > 4;
এই প্রশ্নের সাথে সীমাবদ্ধ রেখেছে একটি ফাংশন ফলাফল একটি কলাম মান প্রয়োগ (প্রয়োগের ফলাফলের LENGTHফাংশনEmployeeName কলাম)। ওরাকলে এবং সম্ভবত অন্য সমস্ত আরডিবিএমএসে, এর অর্থ এই যে কর্মচারী নেমে একটি নিয়মিত সূচক এই প্রশ্নের উত্তর দিতে অসার হবে; ডাটাবেস একটি পূর্ণ টেবিল স্ক্যান করবে, যা সত্যই ব্যয়বহুল।
তবে বিভিন্ন ডাটাবেস একটি ফাংশন সূচক বৈশিষ্ট্য সরবরাহ করে যা এই জাতীয় প্রশ্নের গতি বাড়ানোর জন্য ডিজাইন করা হয়েছে। উদাহরণস্বরূপ, ওরাকলে আপনি এই জাতীয় সূচি তৈরি করতে পারেন:
CREATE INDEX EmployeeTable_EmployeeName_Length ON EmployeeTable(LENGTH(EmployeeName));
এটি আপনার ক্ষেত্রে এখনও সহায়তা না করে, কারণ আপনার অবস্থার জন্য সূচকটি খুব বেছে বেছে নাও পেতে পারে। এর দ্বারা আমি নিম্নলিখিতটি বোঝাতে চাইছি: আপনি সারিগুলির জন্য জিজ্ঞাসা করছেন যেখানে নামের দৈর্ঘ্য 4 এর চেয়ে বেশি Let's আসুন ধরে নেওয়া যাক যে এই টেবিলের কর্মচারীদের 80% নাম 4. এর চেয়ে বেশি লম্বা, ঠিক আছে, তাহলে ডাটাবেসটি সম্ভবত উপসংহারে চলেছে ( সঠিকভাবে) যে এটি সূচকটি ব্যবহার করার মতো নয়, কারণ এটি সম্ভবত টেবিলের বেশিরভাগ ব্লককে পড়তে হবে।
তবে, আপনি যদি ক্যোয়ারীটি বলার জন্য পরিবর্তন করেছেন LENGTH(EmployeeName) <= 4বা LENGTH(EmployeeName) > 35ধরে নিচ্ছেন যে খুব কম সংখ্যক কর্মীরই 5 টিরও কম চরিত্র বা 35 টিরও বেশিের নাম রয়েছে, তবে সূচকটি বেছে নেওয়া এবং কার্যকারিতা উন্নত করতে পারে।
যাইহোক, সংক্ষেপে: আপনি যে লেখার চেষ্টা করছেন তার মতো ক্যোয়ারির পারফরম্যান্স বৈশিষ্ট্য থেকে সাবধান থাকুন।
ANDবিবৃতি যুক্ত করুনSELECT city FROM student.zipcode WHERE LENGTH(city) >= 4 AND LENGTH(city) <= 9;