* It's already in place
* Everyone on your team only knows MySQL
* That's what you know and you are under a deadline
* It's the right tool for the job (as opposed to something very different, from the NoSQL world)
* You are using MySQL Cluster instead of MySQL, but don't have the cash to upgrade to Oracle
If I may toot my own horn, I just upgraded the layout of http://mongodb-is-web-scale.com/ so that you can scroll while the video stays visible.
Clustered and covering indexes. If the data needed by a query is in an index there is no need to retrieve it from the table itself. This leads to better memory usage and cache locality.
MySQL has non transactional tables which use a lot less memory. If you store a large number of small records (say three ints or something) that table will use about a third of the memory a similar postgres (or Oracle) table would.
Mysql:
- Never crashes
- Has more tested/reliable replication than anything else, possibly including Oracle (haven't tried the wacky 3rd party replication things like Goldengate or whatever, and don't believe in spending 6 figures on software licenses in general).
- Supports SELECT, INSERT and UPDATE
Why would I get anything else for a database? For more complicated stuff I have another approach that I employ called "programming".