Tôi khuyên bạn không nên lưu trữ đủ dữ liệu trong bảng của mình.
Như hiện tại, bạn sẽ luôn cần xem xét mọi khoản thanh toán trước đó để xác định liệu khoản thanh toán hiện tại đang hoạt động hay đang chờ kích hoạt, một lần truy cập hiệu suất lớn và truy vấn phức tạp hơn.
expires_at
được tính toán cột cho payments
, được thực hiện khi bổ sung một khoản thanh toán mới dưới dạng MAX(payments.expires_at) + INTERVAL service_plans.days DAYS
sẽ cho phép bạn tính ra số ngày còn lại bằng cách chỉ xem xét một hàng .. và người dùng có đang sử dụng kế hoạch hay không.