I use a hose (diy python system, see this link
http
/www.fishforums.net/index.php?/topic/250013-how-to-make-a-diy-python/) but a little different from that one, in that I dont have a hose connector on the hose that goes in the tank.
All I do is a small circular motion above the sand with the hose while its draing the tank, that will move any debris off of the sand and it will float up the hose, all you need to do is hold the hose an inch or two above the sand just so its enough to take the debris out without taking the sand. You will probably use a little sand each change but only minimla once you have done it a few times and know how high to hold it above the sand so it dont take the sand with it. I spend about 5 minutes at the most doing that above the sand, then just leave the hose higher up in the tank to take out the rest of the water I want to change, my case I do a 33% water change a week. All I then do before refilling is just run my fingers through the sand or use a sand leveller to tidy up any bits. its all very quick and takes me about 20 minutes in all start to finish to empty the water, clean sand, tidy tank and then refil.
of course you dont need a python system, you can use a bit of hose and a bucket, but you will need to keep stopping to empty the bucket.
The muck I get on the sand is minimal each week, which I was quite surprised about considering its so light, thought it would end up looking really dirty after a couple of weeks.