Relational databases use indexes to speed up their performance usually due to the fact that their underlying storage is inherently slow (which has historically meant disk).
I've often created secondary indexes with MyISAM which aren't used in day-to-day operation but that are needed for debugging or exploration of the database.
For example, if you were to have a USER table with a handle (their account name) and an ID (the primary key) you could index by the handle but usually these are long strings and take up a good amount of CPU time to build the index and memory to cache the index.
It dawned on me the other day that this isn't necessary with MySQL Cluster (NDB). With MyISAM you need to use an index because a full table scan might take 10-20 minutes and hold back any INSERTs in the process which could become a big problem.
It also has secondary problems including confusing the OS level page cache and …
[Read more]