first, you've got to make sure you set it to the full 5MP resolution. by default, it is not set to that.
the camera doesn't just get some noise from dark shots, it also does it in bright shots as well. you've got to take control of your camera settings to get the best shots. by default, things like auto brightness are on and will adjust depending on the lighting...which depends on how much light is hitting the light sensor.
for example, if you're taking a picture of the sky. taking the shot from shade or direct sunlight will produce different results due to the auto settings.
you've just got to tinker with all the little settings in order to get the best shots. don't be afraid to change the mess with the exposure settings too. taking multiple pictures rapidly is also a good practice with even professional cameras. sometimes it's better to just take a video recording for a few seconds, moving around a bit but still focused on the target, then look through the video for an acceptable frame to screenshot.
another little trick to remove some of the noise is to set the camera resolution lower than maximum. it somewhat simulates having a bigger light sensor. sensors have an X amount of surface area with light catching nodes that turn light into data. it takes light from multiple nodes and averages them out to get the color that represents 1 pixel. smaller resolutions means more nodes averaged together to represent each pixel (i.e. more light). it's not like anyone you send a picture to is going to be viewing it at 100% on a normal sized screen. most likely they'll only be viewing it at well below 50% the actual size.