читает иногда по 10к там допустим строк
Взять создать новое поле в котором хранить месяц и день и по нему уже искать ?
Третий вариант нравится больше
SELECT с.*, p.*
FROM cart с
LEFT JOIN table_products p ON p.id = c.products_id
LIMIT 10000
SELECT с.*, p.*
переписать, указав конкретные столбцы, иначе будет неопределённость.