質問: Rails5.0, HerokuのPOstgreを使用しています。 Railsアプリで、DBのtext型のカラムにindexを貼りたいと思っていますが、内容が長いためエラーが出るという問題に直面しています。前提として、 * text型にもindexを貼ることができる * 長いテキストにはエラーが出る? ということはわかっており、調べた結果インデックスの長さを length: という形で指定できることを知りました。 この長さとは、具体的にどういう処理が施されるのでしょうか。ユニーク制約を貼りたいので、被ってしまっては困るのですが、、
回答: ※ すみません、タグをみてMySQLの場合の回答をしてしまいましたが、Postgresの場合は違う部分もあると思います MySQLのインデックスに長さを指定すると、**先頭から**その文字数だけがインデックスの対象となります。 URLということで、`latin1`にすれば767バイトまでは`VARCHAR(767)`とすることで完全にインデックスを張れます。 `TEXT`に完全なUNIQUE INDEXは作れませんので、プログラム的にカバーするしかありません。