Effective SQL 読書会(5)に参加
参加者が少なかったので木村さんの話がいつもより多く聞けました。 サポートやコンサル、DBMSの制作などをされている方なのでその膨大な知見に毎度驚かされます。
今回は
- (続き)第2章 プログラム可能性とインデックスの設計
- 項目17 計算値をインデックスで使用する状況を理解する
- 第3章 設計を変更できないときはどうするか
- 項目18 変更できないものはビューを使って単純化する
- 項目19 ETLを使って非リレーショナルデータを情報に変える
- 項目20 サマリテーブルを作成して管理する
を読みました
- 作者: John L. Viescas,Douglas J. Steele,Ben G. Clothier,株式会社クイープ
- 出版社/メーカー: 翔泳社
- 発売日: 2017/12/20
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (3件) を見る
過去のSQLServerではNULLが値として扱われていた。
そのためNULL is NULL
じゃなくてNULL = NULL
でもTrue
となる
ANSI_NULLSオプションをオンにするとこのようなおかしな挙動を防げる
最近だとデフォルトで有効化されているので安心。
- MySqlのTIMESTANP型はタイムゾーンを考慮する
- 関数ベースのインデックスは決定関数でしか使えない
- 関数か決定的かどうかは関数定義時に特殊なキーワードを使う
- DETERMINISTIC句(Oracle)
- IMMUTABLE句(PostgreSQL)
- その関数が決定的かどうかはコンパイル時にわからない。
- インデックスに利用する関数が決定的であることはプログラマが責任を持たなければならない。
- SQLliteの専門的な知見を持っている日本人はかなり少ない
- らしいです
- ETLツール
- 静的なデータファイルをDBにインポートするツール
- それらしいものは何度か触ったことがあるが、ETL(Extract, Transform, Load)という名称は知らなかった
- 商用のものだとData Spiderなんかも有名
- PostgreSQLではTALEND(OSS)なんかが利用可能
- 計算量の大きいデータをキャッシュする仕組み
- マテリアライズドビュー
- サマリーテーブル
- サマリーテーブルは有用だがあまり活用されないらしい
MySQLのイベントスケジューラー
- https://dev.mysql.com/doc/refman/5.6/ja/events.html
- Oracleにもある
- 定期的なインデックスのリビルドで利用できる
ラズパイは正直、あまり大規模ではない組み込み用途か教育用でしか利用できないと思っていたが、 分散システムのようなものを作ってパフォーマンスがシビアな状況でも利用しているらしい
次回は「項目21 UNIONを使って非正規化データをアンピボットする」から