মাইএসকিউএল SQL_CALC_FOUND_ROWS
8.0.17 সংস্করণ সহ কার্যকারিতা হ্রাস করা শুরু করেছে ।
সুতরাং, এটা করা হয় সবসময় পছন্দের সঙ্গে আপনার প্রশ্নের নির্বাহ বিবেচনা LIMIT
করুন, এবং তারপর সঙ্গে তার দ্বিতীয় ক্যোয়ারী COUNT(*)
ছাড়া LIMIT
নির্ধারণ করতে অতিরিক্ত সারি আছে কিনা।
ডক্স থেকে :
SQL_CALC_FOUND_ROWS ক্যোয়ারী সংশোধক এবং তার সাথে থাকা FOUND_ROWS () ফাংশনটি মাইএসকিউএল 8.0.17 হিসাবে অবহিত এবং ভবিষ্যতে মাইএসকিউএল সংস্করণে সরানো হবে।
COUNT (*) নির্দিষ্ট অপ্টিমাইজেশানের সাপেক্ষে। SQL_CALC_FOUND_ROWS কিছু অপ্টিমাইজেশন অক্ষম করে to
পরিবর্তে এই প্রশ্নগুলি ব্যবহার করুন:
SELECT * FROM tbl_name WHERE id > 100 LIMIT 10;
SELECT COUNT(*) WHERE id > 100;
এছাড়াও, মাইএসকিউএল ডাব্লুএল # 12615SQL_CALC_FOUND_ROWS
তে বর্ণিত হিসাবে আরও বেশি সমস্যা থাকতে দেখা গেছে :
SQL_CALC_FOUND_ROWS এর বেশ কয়েকটি সমস্যা রয়েছে। প্রথমত, এটি ধীর। প্রায়শই, সীমাবদ্ধতার সাথে ক্যোরি চালানো সস্তা হবে এবং তারপরে একই ক্যোয়ারির জন্য আলাদা আলাদা নির্বাচন করুন ( ), যেহেতু COUNT ( ) সম্পূর্ণ ফলাফলের সেটটি অনুসন্ধান করার জন্য করা যায় না এমন অপ্টিমাইজেশন ব্যবহার করতে পারে (যেমন ফাইলসোর্ট COUNT (*) এর জন্য এড়ানো যেতে পারে, তবে CALC_FOUND_ROWS এর সাথে, সঠিক ফলাফলের গ্যারান্টি দিতে আমাদের কিছু ফাইলপোর্ট অপ্টিমাইজেশান অক্ষম করতে হবে)
আরও গুরুত্বপূর্ণ বিষয়, এটি বেশ কয়েকটি পরিস্থিতিতে অত্যন্ত অস্পষ্ট শব্দার্থবিজ্ঞান রয়েছে। বিশেষত, যখন কোনও ক্যোয়ারিতে একাধিক কোয়েরি ব্লক থাকে (যেমন ইউএনআইএন সহ), তখন বৈধ ক্যোয়ারী তৈরির সাথে একই সাথে "হত-হয়েছে" সারিগুলির সংখ্যা গণনা করার উপায় নেই। যেহেতু পুনরাবৃত্তকারী নির্বাহক এই ধরণের প্রশ্নের দিকে অগ্রসর হচ্ছেন, একই শব্দার্থিকতা ধরে রাখার চেষ্টা করা সত্যই কঠিন। তদ্ব্যতীত, যদি কোয়েরিতে একাধিক LIMIT টি থাকে (যেমন উত্পন্ন টেবিলগুলির জন্য), তবে এটি SQL_CALC_FOUND_ROWS এর মধ্যে কোনটির সাথে উল্লেখ করা উচিত তা স্পষ্টভাবে পরিষ্কার নয়। সুতরাং, এ জাতীয় অনিয়ন্ত্রিত জিজ্ঞাসাগুলি পুনরুক্তি নির্বাহকের আগে যা ছিল তার তুলনায় অগত্যা পৃথক শব্দার্থক পদার্থ পেয়ে যাবে।
অবশেষে, বেশিরভাগ ব্যবহারের ক্ষেত্রে যেখানে এসকিউএল_এএলসিএলসি_এফউআউআরআরআউআরআউআরএস কার্যকর মনে হয় কেবলমাত্র সীমাবদ্ধতা / অফফেসটির চেয়ে অন্য পদ্ধতি দ্বারা সমাধান করা উচিত। উদাহরণস্বরূপ, একটি ফোন বই চিঠিপত্র দ্বারা প্রকাশিত হওয়া উচিত (ইউএক্সের শর্তাবলী এবং সূচক ব্যবহারের ক্ষেত্রে উভয়), রেকর্ড নম্বর দ্বারা নয়। আলোচনা ক্রমবর্ধমানভাবে অসীম-স্ক্রোল তারিখ অনুসারে অর্ডার করা হয়েছে (আবার সূচক ব্যবহারের অনুমতি দেয়), পোস্ট নম্বর দ্বারা পৃষ্ঠাবদ্ধভাবে নয়। ইত্যাদি।
SQL_CALC_FOUND_ROWS
20 সেকেন্ডেরও বেশি সময় নিয়ে প্রথম 100 টি সারি নির্বাচন করা ; একটি পৃথকCOUNT(*)
ক্যোয়ারী ব্যবহার করতে 5 সেকেন্ডেরও বেশি সময় লেগেছিল (উভয় গণনা + ফলাফলের প্রশ্নের জন্য)।