2020-04-01から1ヶ月間の記事一覧

SQL関数講座 日付以降の切り捨て(Oracle)

timestamp型を日付まででいいんだよ!!ってとおきに使う関数です。 TRUNC (日付) こんな感じ SELECT TRUNC (SYSDATE) FROM DUAL; 理屈は抜きで!!

SQL関数講座 曜日(MySQL)

曜日関数のMySQL版 date_format(time,"%w") こんな感じ SELECT date_format(current_date,"%w"); 値と曜日はこちら oracle、Postgreと違うので注意! 0 日曜日 1 月曜日 2 火曜日 3 水曜日 4 木曜日 5 金曜日 6 土曜日 理屈は抜きで!

SQL関数講座 曜日(PostgreSQL)

曜日関数のPostgreSQL版 まあ、oracleと同じなんですが to_char(日付,'D') こんな感じ SELECT TO_CHAR(NOW(),'D'); 値と曜日はこちら 1 日曜日 2 月曜日 3 火曜日 4 水曜日 5 木曜日 6 金曜日 7 土曜日 理屈は抜きで!

PostgreSQLのNOW()とCURRENT_TIMESTAMP

これの違いってなんでしょう?実は同じでした! NOW()がCURRENT_TIMESTAMPのシノニムみたいです。 理屈は抜きで!

SQL関数講座 曜日(Oracle)

ちょっと前にも書いたかもですが、 曜日について書いていこうかとoracleではこう! TO_CHAR(日付,'D') こんな感じ SELECT TO_CHAR(SYSDATE,'D') FROM DUAL; 値と曜日はこちら 1 日曜日 2 月曜日 3 火曜日 4 水曜日 5 木曜日 6 金曜日 7 土曜日 理屈は抜きで!

SQL関数講座 日付の計算(MySQL)

日付計算するときって、たまにふと忘れるんですよね。 MySQLで1日プラスするときはDATE_ADDを使います。 明日の日付はこんな感じ。MySQL版 SELECT DATE_ADD(CURRENT_DATE(), INTERVAL 1 DAY); 理屈は抜きで!!

SQL関数講座 日付の計算(PostgreSQL)

日付計算するときって、たまにふと忘れるんですよね。 PostgreSQLで1日プラスするときも'+1'ですね。 明日の日付はこんな感じ。PostgreSQL版 SELECT NOW() + 1; 理屈は抜きで!!

SQL関数講座 日付の計算(Oracle)

日付計算するときって、たまにふと忘れるんですよね。 Oracleで1日プラスするときは'+1'ですね。 明日の日付はこんな感じ。Oralce版 SELECT SYSDATE + 1 FROM DUAL; 理屈は抜きで!!

SQL関数講座 システム日付の取得(MySQL)

意外とシステム日付をとること多いとおもうので、取り方を ※というか、自分が忘れがちなので。。。 MySQLならこう SELECT CURDATE();SELECT CURRENT_DATE();SELECT CURRENT_DATE; 結果は全部同じです。 理屈は抜きで!!

SQL関数講座 システム日付の取得(PostgreSQL)

意外とシステム日付をとること多いとおもうので、取り方を ※というか、自分が忘れがちなので。。。 PostgreSQLならこう SELECT NOW(); 理屈は抜きで!!

SQL関数講座 システム日付の取得(Oralce)

意外とシステム日付をとること多いとおもうので、取り方を ※というか、自分が忘れがちなので。。。 Oracleならこう SELECT SYSDATE FROM DUAL; 理屈は抜きで!!

SQLチューニング 列番号をやめよう

order by 句とかで 数字を指定すると、カラムの何番目でソート とかしてくれるんですが これは読み替えが発生するので、NG カラム名を指定しましょう! 理屈は抜きで!

SQLチューニング ROWID

Oracleだけかもしれないですが、隠れたカラムでROWIDというものが存在します。 SELECTでカラム指定するだけで抜けます。 そのROWIDをwhere句に指定すると死ぬほど早いので、 是非! 理屈は抜きで!

SQLチューニング エイリアス

エイリアスをつけると解析速度が上がるって知ってましたか? なるべくエイリアスをつけるようにしましょうね 理屈は抜きで!

SQLチューニング HAVING

HAVINGってたまに使いますが、 かなり重いんでなるべく使わないようにしたほうがいいですね。 理屈は抜きで!

SQLチューニング * って

*って使うと遅くなるんで、 select文を書くときには、*を使わないようにしましょう! 理屈は抜きで!

SQLチューニング バインド変数

バインド変数を使うとパフォーマンスは上がります。 oracleでしか使ったことないんですが。 こんな感じ select * from テーブル名 where 検索カラム名 = :バインド変数; 理屈は抜きで!

SQLチューニング INDEXを使えない⑥

左辺を関数使っているとINDEXが使えないので注意! 意外とSPLITとかつかうんですが、うまいこと逆転させましょう。 理屈は抜きで!

SQLチューニング INDEXを使えない⑤

likeを使うときに、 後方一致とか中間一致を使ってしまうこと。 INDEX使えなくなるので注意ですね 理屈は抜きで!!

SQLチューニング INDEXを使えない④

nullを条件にするのと同じで、 not in とか、!=もINDEXが使えないなうので注意! exstsを駆使しましょう! 理屈は抜きで!

SQLチューニング INDEXを使えない③

INDEXを使えない問題です。 nullを条件に使ってるとINDEXを使えないです。 前回書いたかな? is nullとか これは、nvlとかcoalesceで対応できそうですね。 理屈は抜きで!

SQLチューニング INDEXを使えない②

INDEXを使えない問題です。 or が入っていても、INDEXを使えないので注意 とはいえ使うときはあるんですがね。 理屈は抜きで!

SQLチューニング INDEXを使えない①

INDEXを使えなくなることって結構あるんです。 in句を使うと実はINDEXを使えないんです。 理屈は抜きで!

SQLチューニング 力技

もう本当にどうしようもない時は、スペックを上げるのがいいです。正直チューニングを仕事にしている人からすると、負けた感じがしますが、 本当にどうしようもない時や、時間がない時に一時的にスペックを上げるのはよいことかと 安易に上げるのではなく、…

SQLチューニング 大文字小文字と半角全角、スペースとか

結構キャッシュが効くから早いという話を聞きますが、そのキャッシュっていうのは全く同じSQL文でないと効かないことがあります。 全く同じというのは、大文字小文字や、半角全角や、半角スペースの数とか、改行の数とかです。 つまり、この下の二つはキャッ…

SQL小手先の技 リレーション確認(MySQL)

SQL小手先の技 リレーション確認(MySQL) テーブルのリレーション確認のMySQL版こんな感じ SELECT * FROM information_schema.columns; PostgreSQLと同じですね 理屈は抜きで!!

SQL小手先の技 リレーション確認(PostgreSQL)

テーブルのリレーション確認のPostgreSQL版こんな感じ SELECT * FROM information_schema.columns; テーブル名で絞込すれば云々はoracleと同じ 理屈は抜きで!!