এর ব্যাকগ্রাউন্ডের জন্য, দয়া করে http://drupal.org/node/1067802 দেখুন ।
সব কিছু দেওয়া, এমন কোন পরিস্থিতি বিদ্যমান যেখানে আমি db_select () ব্যবহার করতে চাইতে পারি, বা আমার কি সম্পূর্ণ db_query এর উপর নির্ভর করা উচিত?
এর ব্যাকগ্রাউন্ডের জন্য, দয়া করে http://drupal.org/node/1067802 দেখুন ।
সব কিছু দেওয়া, এমন কোন পরিস্থিতি বিদ্যমান যেখানে আমি db_select () ব্যবহার করতে চাইতে পারি, বা আমার কি সম্পূর্ণ db_query এর উপর নির্ভর করা উচিত?
উত্তর:
সিলেটকিউয়ারি ব্যবহারের 5 টি কারণ রয়েছে
আপনি বিভিন্ন শর্ত, যোগ, ক্ষেত্র এবং এই জাতীয় সংখ্যার সাথে গতিশীল ক্যোয়ারী তৈরি করছেন। উদাহরণের জন্য ফিল্ড_ড্রেডফিল্ডস () দেখুন ।
আপনি তথাকথিত এক্সটেন্ডার ব্যবহার করতে চান । উদাহরণস্বরূপ এক্সটেন্ডাররা হলেন পেজারডেফল্ট (পেজার_কিউরিটি প্রতিস্থাপন করে ) ) এবং টেবিলসোর্ট ( টেবিলসোর্ট_সকিউএল () প্রতিস্থাপন করে )। এগুলি নির্বাচনের ক্ষেত্রে অতিরিক্ত কার্যকারিতা যুক্ত করার অনুমতি দেয়। আরও দেখুন কীভাবে আপনি কাস্টম টেবিলের ডেটা সহ পেজারের সাথে বাছাইযোগ্য টেবিলগুলি তৈরি করেন? । একটি উদাহরণ: নোড_পেজ_ডিফল্ট () ।
আপনি অন্যান্য মডিউলগুলিকে আপনার প্রশ্নের পরিবর্তন করতে অনুমতি দিতে চান। তারপরে আপনি তথাকথিত ট্যাগগুলি যুক্ত করতে পারেন এবং সিলেক্টকিউরি স্বয়ংক্রিয়ভাবে সেই ট্যাগটির জন্য একটি সম্পর্কিত অল্টার হুক কল করবে। আমি আমার প্রাইভেটসগ মডিউলটির সাথে এটির উপর নির্ভর করে চলেছি (আমরা কাস্টম ক্যোয়ারী বিল্ডারের সাথে ডি 6 এ ইতিমধ্যে এটি করেছি)।
আপনি যদি নোড_একসেস সিস্টেমটি কেবল নোডগুলি দেখানোর জন্য ব্যবহার করতে চান / ব্যবহারকারীকে দেখার অনুমতি দেওয়া হয়। আপনার $ ক্যোয়ারীতে কেবল 'নোড_একসেস' ট্যাগ যুক্ত করুন। এটি db_rewrite_sql () প্রতিস্থাপন করে।
সিলেক্ট কিওয়ারিতে কয়েকটি বৈশিষ্ট্য রয়েছে যা আপনার কোডটিকে সমস্ত সমর্থিত ডেটাবেসগুলিতে একই কাজ করতে সহায়তা করে। উদাহরণস্বরূপ এখানে নির্বাচনকোচী :: অর্ডারর্যান্ডম () রয়েছে । এবং যদি আপনার মতো একটি শর্ত থাকে - -> শর্ত ('ক্ষেত্র', $ মান, 'LIKE') নিশ্চিত করবে যে এটি সর্বদা একটি সংবেদনশীল তুলনা। ডি In-তে, আপনাকে স্বল্প (যা) ধীর গতির জন্য লোয়ার () ব্যবহার করতে হয়েছিল। কিন্তু আফাইক, এই মুহূর্তে এই দুটিয়ের চেয়ে বেশি কিছু নেই।
যদি এই কারণগুলির মধ্যে কোনও নির্দিষ্ট ক্ষেত্রে প্রযোজ্য না হয় তবে db_query () ব্যবহার করুন।
ডকুমেন্টেশন সম্পর্কেdb_query()
বলেন:
এই নির্বাচনটি অনুসন্ধানগুলির জন্য এই ফাংশনটি ব্যবহার করুন যদি এটি কেবল একটি সাধারণ ক্যোয়ারী স্ট্রিং হয়। যদি কলার বা অন্যান্য মডিউলগুলির ক্যোয়ারী পরিবর্তন করতে হয় তবে তার পরিবর্তে db_select () ব্যবহার করুন।
আমি সর্বদা db_select ব্যবহার করি কারণ আমি ছোট পারফরম্যান্স লাভের চেয়ে পঠনযোগ্যতা, রক্ষণাবেক্ষণযোগ্যতা এবং ক্রস ডাটাবেস সামঞ্জস্যকে পছন্দ করি। তদুপরি, আমি মনে করি উল্লিখিত সংখ্যায় প্রদত্ত নম্বরগুলি সামগ্রিক পারফরম্যান্সের একটি ভুল চিত্র দেয়। আমরা একটি কোয়েরিতে 300 মাইক্রোসেকেন্ডের পার্থক্য নিয়ে কথা বলছি যা একক কলামের বেশি ফেরত দেওয়ার সময় প্রায়শই বহু মিলিসেকেন্ড পরিসরে চলে run এবং আমি যদি অবাক হব না যে যদি 1-সময় কেবলমাত্র ওভারহেড (ক্লাস লোডিং) থাকে এবং এভাবে পূর্ণ (পৃষ্ঠা) অনুরোধের জন্য পার্থক্যগুলি খুব কম হয়।