【mysql】text型にインデックスを貼る

こんにちわ。
久しぶりの投稿になってしまいました…

ここ最近は、シリアルを使った某キャンペーンサイトを構築したり、
某会社の健康関連ウィジェットを作ったりと、
色々な経験をさせていただいております…

さて、今回は、その某キャンペーンサイトのような
何百万件ものデータが入ってくると予想された場合に、
データベース(MYSQLですが…)のパフォーマンスを上げるための
ちょっとした小細工です。

大体、データベースには、auto_incrementにて、
primary_keyを貼り、目次として使いますが、
レコード数が多くなってくると、それだけでは足りなくなります。

そこで、indexをさらに貼ったり、場合によっては、
パーテーションを組んだりとするのですが…

今回は、簡単なパフォーマンス効果として、
複数のインデックスの貼り方。

基本、indexを貼るところは、数値の部分が良いのかなとは思いますが、
中には名前だったり、ユーザーのIDだったりするわけで、
そのユーザーのIDがvarcharやtextだったら…

text型はインデックスが貼れないので、
そこで以下のように貼ることができます。

カラム1 bigint
カラム2 varchar(255)
カラム3 text
のようなテーブルの場合、

ALTER TABLE テーブル名 ADD INDEX インデックス名(カラム1,カラム2,カラム3(255));

カラム3は制約ではじかれるので、頭254文字でインデックス貼ってねという意味になるかと…

お試しあれ。

Pocket