Here is something no one has mentioned yet.
If you convert the row format of MyISAM tables from DYNAMIC (default) to FIXED, you can increase overall SQL performance against the table at least 20%.
According to pages 71-73 of MySQL Database Design and Tuning (ISBN 0-672-32756-1), just run the following command on any MyISAM table:
ALTER TABLE tblname ROW_FORMAT=FIXED;
and you will get a nice performance boost on your queries against that table.
The example given in the book stated that queries against DYNAMIC-row MyISAM table took 50% longer to execute that the FIXED-row MyISAM table. If you then take the FIXED-row MyISAM table and compress it using myisampack, the compressed FIXED-row MyISAM table queries 10% faster than the uncompressed FIXED-row MyISAM table.
There is a grave drawback to this approach ??? The FIXED-row MyISAM table are at least twice as large as its DYNAMIC-row MyISAM counterparts. So, it you could afford to tradeoff speed for space, you should go for FIXED-row MyISAM tables. Then, all queries will be faster without any additional table structure changes.
You could also run the ALTER TABLE tblname ROW_FORMAT=FIXED; against an InnoDB table as well. If you did this to tables in both InnoDB and MyISAM storage engines, you still would not have a level playing field. The edge would always go to MyISAM. The reason ??? All non-unique index lookups must traverse a nonclustered index and then through the clustered index for rowid access. MyISAM indexes only go through one index at most.
I am not just conjecturing on this. About 4 years ago, I personally took a 2GB table, ran the ALTER TABLE, and expanded it to 3.7GB. All resulting queries averaged 20% faster than it was running prior to making the row format change.
I highly recommend doing this for all MyISAM and InnoDBs if you want increased performance and if you do not mind increased file sizes.