今日はなにの日。

気になったこと勉強になったことのメモ。

SQL

今日は、DBAとしてたった一つだけ監視するならの日。

目次 目次 とある日 はじめに 検証環境 元ツイート補足 データベースリライアビリティエンジニアリング ――回復力のあるデータベースシステムの設計と運用 DBRE DBREJP slowquery ツイート 概要 5.4.5 スロークエリーログ 検証 slowquery設定 SQL実行確認 SHO…

今日は、SQLのFROM句なくてもどこまでかけるのかの日。

目次 目次 とある日 MySQL SELECT WHERE GROUP BY HAVING ORDER BY 〆 とある日 MySQLで、select sleep(10);とselect count(*) from (select sleep(10)) a;はsleep(10)が発動して「1 row in set (10.01 sec)」になるけど、select count(*) from (select slee…

今日は、MySQL8.0.24の変更点オプティマイザーノートについての日。

目次 目次 とある日 オプティマイザーノート SQL 変換検証 オプティマイザ変換前サブクエリ 実行計画 オプティマイザ変換後外部結合クエリ 実行計画 おまけ速度計測 optimizer_switch flag subquery_to_derived(本題) デフォルト値 クエリ変換検証 1. 現在…

今日は、外部キー制約参照同士テーブルの日。

目次 目次 とある日 環境 テーブル定義 社員 組織 テーブル作成手順 FOREIGN_KEY_CHECKS CREATE TABLE ALTER TABLE INSERT INTO UPDATE SET SELECT 外部キーの問題 社員テーブルデータ削除 組織テーブルデータ削除 テーブル再設計 〆 とある日 応用情報技術…

今日は、SQL勉強して三年目だがUsingとOnの気づかなかった違いの日。

目次 目次 とある日 環境 USINGとONの違いについて 1. 同一列名 2.結合後列数減少 列数減少による問題 Using On 気づかなかった理由 Onの多用 結合列の参照をしない 〆 とある日 とある内容について検証しているときに気づいたSQLのUSINGとONの違いについて…

今日は、RECURSIVEで再帰の罠にかかったの日。

目次 目次 とある日 RECURSIVEとは WITH(共通テーブル式) RECURSIVE(再帰共通テーブル式) 実践 テーブル定義 再帰共通テーブル SQLエラー [3636] 発生 比較IDミス SQL修正 〆 参考記事 とある日 RECURSIVEを使ってみたかった。 ただそれだけの理由。 REC…

今日は、AUTO_INCREMENTに対してバルクインサートをしたときの日。

目次 目次 とある日 環境 Oracle VM VirtualBox DBeaver Tera Term ホスト PC ゲスト PC OS メモリ ストレージ MySQL 謎現象発動 テーブル作成 バルクインサート AUTO_INCREMENT値再確認 謎解決 innodb_autoinc_lock_mode = 2 解決までのプロセス 謎発覚 発…

今日は、MySQLのTRUNCATEとDELETEのコアな違いの日。

目次 目次 とある日 結論 環境 Oracle VM VirtualBox DBeaver Tera Term ホスト PC ゲスト PC OS メモリ ストレージ MySQL 検証 検証内容 検証テーブル作成 TRUNCATE DELETE 〆 とある日 とあるテーブル検証をしてて、TRUNCATEを実行したときに起こったお話…

今日は、2020年アドベントカレンダーその後の日。

目次 目次 とある日 今日は、DBで日付にはDATE型?VARCHAR型どっちの日。 ALTER TABLE 前 ibdファイルサイズ ALTER TABLE ALTER TABLE 後 ibdファイルサイズ 今日は、MySQL8.0 GISを使って距離と三角形の面積求めてみたの日。 2点間の距離ストアドプロシージ…

今日は、MySQL8.0 GISを使って距離と三角形の面積求めてみたの日。

初めに この記事はRDBMS-GIS(MySQL,PostgreSQLなど) Advent Calendar 2020のエントリーです。 目次 初めに 目次 とある日 環境 Oracle VM VirtualBox DBeaver ホスト PC ゲスト PC OS メモリ ストレージ MySQL 二点間の距離 公式 いざ求める! 問題 2点間の…

今日は、MySQL EXPLAINがデータベースを破壊する可能性がある場合の日。

目次 目次 とある日 環境 Oracle VM VirtualBox OS MySQL 実践 一般ログ確認 EXPLAIN DML LOG EXPLAIN FUNCTION LOG EXPLAIN DML TEST EXPLAIN概要 INSERT DELETE UPDATE 〆 とある日 Uncommon Sense MySQL – When EXPLAIN Can Trash Your Database とあるバ…

今日は、SQLのGROUP BYのBYっている?の日。

目次 目次 とある日 BYの謎 BYの使用用途 BYの英単語としての意味 BYの謎の考察 PRIMARY KEYとNOT NULLの謎 制約の意味 PRIMARY KEY NOT NULL PRIMARY KEYとNOT NULLの謎の考察 実行順序の謎 実際の実行順序 実行順序の謎の考察 参考サイト BYの謎参考 PRIMA…

今日は、遅いSQLクエリを考えるの日。

目次 目次 とある日 RDBMS 問題作成 1.INDEX未使用問題 2. ORDER BY問題 3.IN句EXISTS句問題 テーブル作成 テーブル設計 ER図 SQL データ生成 SQL INDEX確認 遅いSQL作成 1.INDEX未使用問題 2.不用意なソート問題 3.IN句問題 解決方法 1.INDEX未使用問題 2.…

今日は、SQLあるあるの日。

SQL

とある日 SQLを学び始めて3年ほど経とうとしたある日のこと。 ふと、いつもここ苦労してるなとかあんな事あったなと思い出した。 ってことで、自分が今まで学んでいくなかでやったあるあるをまとめようと思う。 あるある カンマ派閥 前カンマ派と後カンマ派…

今日は、ストアドプロシージャ実践編の日。

とある日 ストアドプロシージャのための準備 テーブル構成 Menus Members Orders テーブルデータ Menus Members Orders いざ実践! ストアドプロシージャ作成 ストアドプロシージャを呼び出す 〆 とある日 一本前に上げた。 updraft.hatenadiary.com ストア…

今日は、ストアドプロシージャについて知識編の日。

とある日 ストアドプロシージャとは 現段階で自分が知っているストアドプロシージャの知識 調べてみた 似て非なるものストアドファンクション ここで疑問 両者の非なる所 機能の非 用途の非 ストアドプロシージャ ストアドファンクション まとめ とある日 My…

今日は、データベースでのNullの基礎知識の日。

とある日 そもそもNullとは Null比較 数値同士の比較 Null同士の比較 3値論理 ベンダーによるNullの違い Oracle12c MySQL8.0 まとめ とある日 データベースの勉強をしていて、切っては切り離せないNullについてもっと知りたいと思い。 Nullについて、調べま…

今日は、初めSQLで苦戦したINとEXISTSの違いの日。

とある日 INとEXISTSの概要 INの場合 条件 SQL例 EXISTSの場合 条件 SQL例 INとEXISTSの違い 1.構文 2.サブクリエ 3.サブクリエの結果行 IN句は、データ型と指定した列の個数が同じでないとエラーとなる。 EXISTS句は、サブクリエが返す値はなんでもよい。 4…

今日は、SQLに似たSOQLって何の日。

SQL

とある日 Qiitaのトレンドを、見ててをある記事1があった。 その記事のタイトルにSOQLってあって、 なにこれSQLに似てる。関係あるのかなと思いクリック。 え。これはもうSQLじゃん。はじめてみた。ってことでググっみた。 SOQLとは ググった結果、一番上2に…

今日は、SELECT COUNT(*);のついでにの日。

SQL

ある日の出来事 Twitterでとあるツイートを見つけた。 SELECT COUNT(*) ;の結果が1になるというもの。 mysql> select count(*); +----------+ | count(*) | +----------+ | 1 | +----------+ 1 row in set (0.00 sec) なんでなのか調べてみた 調べるとすぐに…

今日は、SUM関数に関する新発見の日。

SQL

とある日の発見 とある日調べものをしていて見つけた記事1にあったSQLがとても気になった。 select subID ,sum((sort=1)*main) as main1 ,sum((sort=2)*main) as main2 ,sum((sort=3)*main) as main3 from sub2 group by subID このSQLのsum((sort=1)*main)…