मेरा सुझाव है कि आपने अपनी तालिका में पर्याप्त डेटा संग्रहीत नहीं किया है।
जैसा कि अभी है, आपको यह पता लगाने के लिए हमेशा प्रत्येक पिछले भुगतान को देखना होगा कि क्या वर्तमान भुगतान सक्रिय है या सक्रियण की प्रतीक्षा कर रहा है, एक बड़ा प्रदर्शन हिट और अधिक जटिल क्वेरी।
एक परिकलित expires_at payments . के लिए कॉलम , जो MAX(payments.expires_at) + INTERVAL service_plans.days DAYS के रूप में एक नया भुगतान जोड़ने पर निकाला जाता है आपको केवल एक पंक्ति को देखकर शेष दिनों की संख्या निकालने की अनुमति देगा.. और उपयोगकर्ता किसी योजना पर है या नहीं।