Its not the same computing size especially if so many files than just list...Because it after has to add total of each subdirectory etc...
What is /data? a file system? in which case why not just
du -sm /data
and where it gets complicated is if you have NFS mounted on top...
Is /data ia separata file system? Then you can quickly query it with a statfs() e.g. df /data . (Maybe you need some options like df -Pk /data .)
But if you need to break it down then you must use du.
Here is a command that I often use for cleanup:
du -akx "$@" | sort -k1,1n | tail -100
I have used "$@" so it will take arguments when it is placed in a function or in a script. (Without arguments du defaults to . )