こんにちわ。
久しぶりの投稿になってしまいました…
ここ最近は、シリアルを使った某キャンペーンサイトを構築したり、
某会社の健康関連ウィジェットを作ったりと、
色々な経験をさせていただいております…
さて、今回は、その某キャンペーンサイトのような
何百万件ものデータが入ってくると予想された場合に、
データベース(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文字でインデックス貼ってねという意味になるかと…
お試しあれ。