毎日温泉に入りたい♨︎

見た物や買った物、投資についてを書いてますヽ(* ॑꒳ ॑* )ノダァーッ!!

テクノロジー-SQL

1億件単位のテーブルにdelete文発行した時の所感

DBはmysql versonは5.6シリーズ 削除対象は期間による条件でpkでもなければindexも貼られていない。 DBに存在する件数は約1億5千万レコード、その中から対象期間分だけを削除する必要があった。 削除件数でいうとおよそ2千万件ほど。ざっくり消す為sqlは単純…

SQLで総数を出した後の各項目の絞込み

年月単位での件数を求める必要があり、かつその総数ごとに条件があった。 GROUP BY 嫌い。 基本は下記にまとまってます、 MySQL 日時ごとの集計まとめcount()で数えられるのはnull以外なのでそれを利用する。 SELECT DATE_FORMAT(base_table.rest_date, '%Y-…

SQLの結合 NLJ

JOINのアルゴリズム テーブル結合するSQLを実行するとRDBは内部的にテーブルを結合する処理を実行する。アルゴリズムは知る限り3種類あり、当たり前だが記述によりパフォーマンスが異なる。 ・Nested Loop Join(NLJ)・Hash Join・Merge Join 知るかぎりMySQL…

sqlいつも忘れてしまう瑣末な事その2

その1はこちら*1 sqlのselectした結果を挿入する方法 もう移行なんてやることないと思い忘れることにしたが、データの抜け埋めでやる必要が出てきた そして例によって忘れていたので下で対応、有難し INSERT INTO table_1 (col1, col2, ...) SELECT col1, co…

カラム名の変更 SQL

「瑣末な問題」 カラムの名前自体を変更したい時、新旧の名前の記載方法を忘れるのでメモ 調べて出てくる情報がマニュアルそのまま記載だけどこれだと直感的にわからない CHANGE句の後に現カラム→新カラムの順番で指定する mysqlの場合は型も指定すること AL…

railsでLEFT JOIN

こんにちは、こんばんは、おはようございます(。っ・ω・)っダァーッ!! JOINのやり方忘れていたせいで2,3時間無駄にしたorz includes 関連するテーブルをまとめて取得する(n+1対策) rails4はreferencesを付ける事でLEFT OUTER JOINになる sqlのon句で指定するカラ…

DISTINCTを使わないで重複を排除する

始めに SQLのDISTINCTはソートがあるので処理が重いという説があり、EXISTSとかGROUP BYで代用する方が良いと伺った… 爆裂!C#野郎: DISTINCT と GROUP BY 個人的にはDISTINCTを使うほうが見た時に意味が通ってる気がするので可読的に好きです、しかし昨今…