ASMのきもち

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

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

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

まずはこのブログ、拝見頂いてありがとうございます!
レスおっっそいかもですが、頂いたコメントに対してお返事したい所存ですので、是非気軽に「ここまちがってるでー」と指摘いただけると幸いです。

そして前回更新から、少し間があきました><
夏休み第一弾をしてきました!

某避暑地に行ったのですが、全然涼しくなかった…今年の日本の暑さは本当異常ですね。
みなさま、ご自愛くださいませ。

で。でででで。
明後日から一週間、別の所に旅に行ってきますので、またまたしばしお休みになります。
ということで、今日も読んでいこー!!

今日もこれの続き。
tomomo1015.hatenablog.com


今日読んだもの
1.3 MySQL 8.0 の新機能
ここのEXPLAIN ANALYZE ステートメントから。

  • これはEXPLAIN ANALYZE による情報の取得をちゃんと読んだほうがいい
    • オプティマイザの期待が実際の実行とどのように一致したかに関する EXPLAIN 出力を生成します」ってすごくないですか?
    • リファレンスの例をみて「うぉぉおぉおこれすごいいいい!!」と一人大興奮してる人です。知らなかった!こんなに詳細に出してくれるの?!MySQLすごい!これ絶対使おうそうしよう。loopsまで出してくれるなんて、あなたイイコ過ぎませんかMySQLさん…
    • しかも「EXPLAIN FORMAT=TREE 」とか「EXPLAIN FORMAT=JSON」にすると、それぞれの形式で出してくれるんだ…しゅごい。個人的にはTREEが好き
mysql> EXPLAIN ANALYZE SELECT * FROM t1 JOIN t2 ON (t1.c1 = t2.c2)\G
*************************** 1. row ***************************
EXPLAIN: -> Inner hash join (t2.c2 = t1.c1)  (cost=4.70 rows=6)
(actual time=0.032..0.035 rows=6 loops=1)
    -> Table scan on t2  (cost=0.06 rows=6)
(actual time=0.003..0.005 rows=6 loops=1)
    -> Hash
        -> Table scan on t1  (cost=0.85 rows=6)
(actual time=0.018..0.022 rows=6 loops=1)
  • クエリーキャストは、暗黙的型変換のことであっているかな?
    • ↑に書いたEXPLAIN ANALYZE使うと、CASTしているところはcastと出る。わかりやすい。
mysql> EXPLAIN FORMAT=TREE SELECT * from d JOIN n ON d.dt = n.i\G
*************************** 1. row ***************************
EXPLAIN: -> Inner hash join (cast(d.dt as double) = cast(n.i as double))
(cost=0.70 rows=1)
    -> Table scan on n  (cost=0.35 rows=1)
    -> Hash
        -> Table scan on d  (cost=0.35 rows=1)
  • TIMESTAMP および DATETIME のタイムゾーンサポートの箇所は「タイムゾーンオフセットを受け入れます」と書かれていて、ナンノコッチャーと思ったのですが例がちゃんと書いてあって。'2023-08-01 13:00:30+09:00' とかの「+09:00」のことなんですね。
  • JSON_SCHEMA_VALID() について
    • リファレンスの例がまたわかりやすいのだけど、エラーになった時「SHOW WARNINGS」で見れば理由をちゃんと教えてくれる。
    • これ他でもあるよね?多分使えば出てくる所で使っていないかも。これも普段利用するようにしよう
  • ON DUPLICATE KEY UPDATE について
    • duplicateと聞くと、RMAN思い出しちゃいますね
    • エイリアスを使用してINSERTとか参照できるのは長文SQL書くときに便利そう


短いですが、今日はここまで!
明日は「SQL 標準の明示的なテーブル句およびテーブル値コンストラクタ」から読みますよー!