I’ve made more improvements to the duplicate index checker. I addressed a MySQL bug Roland Bouman mentioned to me, added more tests to the suite, and made changes so it considers more types of indexes now (HASH, BTREE, SPATIAL). I made no changes to the foreign key checking.
The bug Roland mentioned is a problem with
SHOW CREATE TABLE that causes MySQL to show an index as type HASH when it’s really a BTREE. I found a pretty easy workaround.
In the meantime, Roland has released a SQL-only method to find duplicate indexes in newer versions of MySQL. It’s an excellent use of the INFORMATION_SCHEMA. He also wrote an article on finding duplicate indexes for O’Reilly Database, and for his own blog too.
Daniel Schneller has also continued to work on a Java implementation of a GUI tool to find duplicate and redundant indexes.