ASMのきもち

DBとAnsibleが気になって仕方ない人のブログ

MySQLのリファレンスを読む 1章の続き その④

まいえすきゅーえりたい ぽすぐれない おらくるってる(狂ってる)tomoです。

危ない危ない、また三日坊主になるところだったぞ!
tomomo1015.hatenablog.com


今日読んだもの
1.3 MySQL 8.0 の新機能
ここの文字セットのサポートから

  • 文字セットのデフォルトが「utf8mb4」になったのは大変有名ですが、utf8mb4っていっても色々あるんですよね。文字コード奥深い、文字コード沼。以下SQLで対応しているutf8mb4がいっぱいあるんだけど日本語に最初に対応したのは「utf8mb4_ja_0900_as_cs」です、と。いやぁ本当、沢山あって最初これ見た時震えました。なん…だと…!!
SELECT COLLATION_NAME, PAD_ATTRIBUTE FROM INFORMATION_SCHEMA.COLLATIONS WHERE CHARACTER_SET_NAME = 'utf8mb4';
  • JSON対応。いやだからRDBMSJSON参照するのやめようよとは言いたいけど言わない。便利だからねJSON
  • JSON 集計関数は使い所がわからないあたり、開発者スキルがなくて反省。でも知っておいたら絶対便利だと思うのでリファレンス読むの楽しみ
  • JSON_PRETTY()関数ができて、JSON読みやすくなった、と。これ知らなかったな、確認するときとか便利そう
  • ORDER BYでJSON検索する場合、メモリに読み込ませてソートする(早くなる)、KEYで検索するけど短いKEYは早くなる
  • JSON カラム値の部分的な更新が可能。ほぉぉ細かい技ができるんですね…!
  • JSONのユーティリティ関数が増えてる。このあたりは流行りなのかなぁ
  • JSONの正規化のところはリファレンスの例をみて「ほうほう」と思う次第。JSONカラム便利そう。特にこの例とか
mysql> INSERT INTO t1 VALUES ('{"x": 17, "x": "red", "x": [3, 5, 7]}');

mysql> SELECT c1 FROM t1;
+------------------+
| c1               |
+------------------+
| {"x": [3, 5, 7]} |
+------------------+
  • JSON_TABLE()関数はJSON データを受け入れ、指定されたカラムを持つリレーショナルテーブル…大変便利だと思うんですけど、乱用こわい。大量にある場合はDynamoとかに入れたい
  • データ型指定でデフォルト値としてBLOB、TEXT,、GEOMETRY、JSONが対応。JSONもなのか…
  • オプティマイザの話。不可視インデックスがサポート、降順インデックスがサポート(してなかったのか)、式値のサポート(JSONとか)
  • 外部結合のところはリライト周りちゃんと読み込みたい


というので、今日はここまで。オプティマイザ周りは復習の意味も込めて明日再度読み込みたいと思います!