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]