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

SQLチューニング with句

データブロックをいろんなところで使いたい時にwith句を使いますよね でも、with句でデータ持ってくるのって意外と遅いんです。 なので、面倒でもwith句を外して一つ一つに条件をつけるようにしてみて下さい! 理屈は抜きで!

SQLチューニング リストパーティション

パーティションの第三段ですね。 パーティションの三種類目はリストパーティションです。 リストパーティションはデータの中身をある程度理解している人が使いましょう。 リストパーティションはこのデータはこのパーティションにいれよう! などデータ単位…

SQLチューニング パーティション レンジ

パーティションの第二弾ですね 受注情報とか、経費とか日付ごとの塊が重要なデータってありますね そんな時はレンジパーティションを使いましょう! 日付が増えていくと勝手にパーティション分割してくれていきます! 理屈は抜きで!

SQLチューニング パーティション ハッシュ

パーティションって実は適当にやればいいのではなく、種類があるんです。 とりあえず大きいデータをパーティション分割する いい感じのキーも見つからない そんな時は主キーにハッシュパーティションを貼りましょう! オプティマイザがいい感じにパーティシ…

SQLチューニング in句? where句?

結合条件って何も考えずにin句にいれてないですか? 実はwhere句にいれたほうが早かったり、、 理屈は抜きで!

SQL小手先の技 カラム確認(PostgreSQL)

どんだけデータが入っているかわからないけど、ちょっとだけデータみたいってときありますよね。 あと、カラムの確認をしたいなど そんな時によく使うのがこちら PostgreSQL select * from テーブル名 limit10; スパっと10行抜けるんでおためしを 理屈は抜き…

SQLチューニング 結合順

開発時には意外と気にしていないかもしれませんが、データの件数が見積れる場合には、データ件数が小さい順番で結合するように意識してください。LEADINGですね。 下のa bはそれぞれテーブル名です。 Oracleなら/*+LEADING(a b)*/ postgreSQLなら/*+Leading(…

SQLチューニング マージ文の罠 (Oracle)

INSERTを早くする時にとりあえずAPPENDを入れましょうと言いましたが、 MERGE文の時には入れてはいけないです。 DBの容量が膨れ上がってしまいます。 理屈はぬきで!

SQLチューニング インサートを速く(PostgreSQL )

insertではなく、copy fromのコマンドを使いましょう! ちなみに、INDEXを張る前に実行するのも有効です! 理屈は抜きで!

SQLチューニング インサートを速く(Oracle)

ヒント句にAPPENDを入れましょう。ただし、容量に注意しながら実行してください。 /*+APPEND */ ヒント句なのでinsert書いたすぐ後ろに貼り付けて使って下さい。 理屈は抜きで!

SQLチューニング インデックスが効かない・・・

せっかく考えてINDEXを張ったのに、実行計画を見ると何故かINDEXが効いていないことありませんか? where句で指定されているカラムに関数が入っている場合、対象カラムのINDEXは効きません! もう一度見直しましょう!! そもそも関数を使わないと検索できな…

返ってこないSQL 意外とやりがちなミス

同じテーブル同士を結合していませんか? エイリアスをaとかbとか適当につけていると意外と気づかないうちに同じテーブルの同じカラム同士を結合していて返ってこないSQLになりがち、、 見直しましょう!

SQL小手先の技 アナライズの罠

データ移行の時や性能をあげるためのアナライズですが、テーブルにレコードが一件も入ってない状態でアナライズをするとアナライズが返ってこなくなるので注意です。 エラーにならないのがまた嫌なとこ、、 0件ANALYZEは注意!

SQLチューニング ヒント句が沢山

画面入力によって検索条件(where句)が変わってある条件の時に遅くなってしまうことありませんか? しかも、前の開発者がヒント句を異常に記載しており、何を変更すればいいのかわからない時ありませんか? そんな時は ヒント句を全て削除! 理屈は抜きで!…

SQLチューニング パラレル

ヒント句にparallelを入れましょう。 下の数字はCPUの同時実行数です。 おおくても6くらいにしておいたほうがいいです。Oracleなら /*+ parallel(4) */postgreSQLなら /*+ Parallel(テーブル名 4)*/mysqlはあるのか? あったら教えて下さい。。 INSERTの時…

SQL小手先の技 カラム確認(Oracle)

どんだけデータが入っているかわからないけど、ちょっとだけデータみたいってときありますよね。 あと、カラムの確認をしたいなど そんな時によく使うのがこちら Oracle select * from テーブル名 where rownum < 10; スパっと9行抜けるんでおためしを 理屈…

SQLチューニング Hashjoin

ヒント句にhashjoinを入れましょう。 下のa bはそれぞれテーブル名です。Oracleなら /*+USE_HASH(a b) FULL(a b)*/ postgreSQLなら /*+ HashJoin(a b)*/mysqlはあるのか?とにかくhash結合をする!ヒント句なのでselect書いたすぐ後ろに貼り付けて使って…

SQLチューニング インデックス

基礎の基礎ですが、チューニングをする時には とにかくINDEXを見直したり作成しましょう。以外と玄人の人程、基礎過ぎて忘れることがあります。 where句やin句に指定されてるカラムでINDEXを付ける。 そして、ANALYZEを実行する。 DBエンジンが何にせよ、ま…

自己紹介

都内でITコンサルタントをしている者です。 主にDB設計、チューニングを行っています。 このブログでは、SQLチューニングに全く詳しく無い方でもすぐに使えるチューニング術について記載します。私はこれまで様々なプロジェクトでチューニングやDB設計を主に…