Open2

SQLチューニング

t_kuroiwat_kuroiwa
SELECT * FROM テーブル名 WHERE 絞り込みカラム(1= XXX ORDER BY 更新日(2DESC LIMIT 10;

レコード量数千万、絞り込みマッチに10万レコード程
 → 更新日新しい順に10件ほしい

すでに以下indexが付与

CREATE INDEX インデックス名 ON テーブル名 USING btree( 絞り込み );
CREATE INDEX インデックス名 ON テーブル名 USING btree( 更新日 );

性能でない・・・複合インデックス使ってみるか・・・・

CREATE INDEX インデックス名 ON テーブル名 USING btree( 絞り込み, 更新日 DESC );

やった!!めちゃ早い!!

参考:
【図解】B-treeを理解し、複合インデックスの順番を正しく作る
DBのインデックスと複合インデックス

t_kuroiwat_kuroiwa

UNIONをちゃんと理解しよう

UNION: テーブルの足し算

  • UNION: 和集合
    • 重複行は削除される
    • ALLをつけると重複行も残せる!(UNION ALL)

集合演算の注意点

  • 演算対象となるレコードの列数は同じ
  • 足し算の対象となるレコードの列のデータ型が一致している
  • SELECT文はどんなものを指定しても良いが、ORDER BYは最後に1つだけ!

参考文献

SQL 第2版 ゼロからはじめるデータベース操作 (プログラミング学習シリーズ)