आप पहली बार SELECT
केवल UNION
में पर SQL_CALC_FOUND_ROWS
निर्दिष्ट करना होगा; COUNT(*)
का उपयोग करते समय आपको वास्तव में बाहरी SELECT
क्वेरी की आवश्यकता नहीं होती है।
SELECT * FROM my_table1
UNION ALL
SELECT * FROM my_table2
UNION ALL
SELECT * FROM my_table3
LIMIT 0,10;
हम तो बस लिख सकते हैं::
SELECT SQL_CALC_FOUND_ROWS * FROM my_table1
UNION ALL
SELECT * FROM my_table2
UNION ALL
SELECT * FROM my_table3
LIMIT 0,10;
हम तो कहते हैं:
SELECT FOUND_ROWS();
यह
उदाहरण के द्वारा, मान लें कि हम निम्न LIMIT
एड क्वेरी डालते हैं आपके प्रश्न में उल्लिखित बाहरी क्वेरी और जे की टिप्पणियों में कुछ ओवरहेड से बचाता है ओ Stefanelli का जवाब (हालांकि मैं पूरी तरह से आश्वस्त नहीं हूँ यह एक उल्लेखनीय अंतर होगा)।
मुझे लगता है कि इसे फिर से पुनरावृत्ति है कि इस केवल बल्कि UNION
से यदि आप UNION ALL
उपयोग कर रहे हैं काम करेंगे लायक है - इसका कारण यह है है पंक्ति संख्या से पहले डुप्लिकेट निकाल दिए जाते हैं गणना की जाती है, जिसका अर्थ है आप FOUND_ROWS()
से एक ही परिणाम प्राप्त करेंगे जैसा कि आप करेंगे UNION ALL
।
आपके समाधानों में क्या गलत है? –