Define index lengths in your migrations
Defining an index length is a common practice in order to avoid large data indexes, and improve performance. Some time ago, I sent a patch to Rails core, which added the functionality to define index lengths in the migrations. For example:
add_index(:accounts, [:name, :surname], :name => 'by_name_surname', :limit => 10)
While I wait a decission from the Rails core members about this patch, I decided to release this functionality built-in in a plugin.
With this plugin, you can specify index lengths in your migrations easily. Here are some examples:
add_index(:accounts, :name, :limit => 10)
generates CREATE INDEX by_name ON accounts(name(10))
add_index(:accounts, [:name, :surname], :name => 'by_name_surname', :limit => 10)
generates CREATE INDEX by_name_surname ON accounts(name(10), surname(10))
add_index(:accounts, [:name, :surname], :name => 'by_name_surname', :limit => {:name => 10, :surname => 20})
generates CREATE INDEX by_name_surname ON accounts(name(10), surname(20))
You can download it from my GitHub repo github.com/eparreno/mysql_index_length/






