MySQLのGenerated Columns
ISUCON10予選問題をやっていて、MySQLにGenerated Columnsというものがあることを知ったのでメモ。
MySQL 5.7.6から使えるようになったらしい。
ドキュメントはここにある。
Generated Columnsがなにかというのはここ書いてあるのがわかりやすかった。
ISUCON10予選問題では「降順と昇順と組み合わさったORDER BYを狙ったindexを貼る」ことに使われていた。
もう少し詳しく書くと、 「ある検索クエリのパフォーマンスを改善するためにORDER BYを狙ったindexを貼りたいけど、MySQL5.7では降順と昇順が組み合わさったORDER BYには単純にindexを貼っても効かない」という状況で、 「降順指定されてるintegerカラムのマイナス値を保持するカラムをGenerated Columnとして作成し、それをORDER BYに指定する」ことで解決するという使い方。 なるほどな〜〜〜という感じ。テクとして覚えておきたい。
WHERE, ORDER BYとindexについての基本的な理解を得るのにはこのページが役にたった(2008年の記事であることに注意)。