Akihito Ikeda

MySQLのGenerated Columns

posts/2021-07-20diary

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年の記事であることに注意)。

© Akihito Ikeda - Last update 03.12.2021 01:11.