you can back off the keepalive timer (maybe once every 5 minutes?). And the keep alive is only 2 bytes in each direction.
Connecting, particularly with credentials, is quite a lot of bytes.
Subscribing (if your device does that) requires the topics to be written out in full, so can be quite a lot of bytes, also.
So it depends really - how often are you going to be sending data? If it’s (say) once a day, then yes, just connect, publish, disconnect.
If you need to receive a message to the device, whether you need to be always connected depends on how quickly you need to react to that message….
In the one connection per day example, if you are happy to receive your messages at the one time a day you connect, then sending the message QoS 1 or 2 (assured delivery) will make sure the messages are queued for delivery to the device when it connects. (make sure you set cleanSession to false)
If you need to react immediately to a message sent to the device, then you will need to stay connected, so it can be delivered to you as soon as it is published.
I hope that helps?
Andy