PostgreSQL

PostgreSQL のインデックスはデフォルトで IS NULL 句に使用されない

表題の通り hoge テーブルの fuga 列にインデックスを作成しても CREATE INDEX hoge_fuga ON hoge(fuga); 条件に IS NULL を含む検索ではインデックスは利用されません。 SELECT * FROM hoge WHERE fuga IS NULL; 結果、上の SQL はレコード数が増えると低速…

明示的なロックと自動的なロック

データベースがロックをかけるのは、明示的に指定した時だけではないというお話。http://www.postgresql.jp/document/pg813doc/html/explicit-locking.htmlPostgreSQL の明示的なロックについては上記ドキュメントの通りです。ドキュメントに記載された通り…

PL/pgSQL を使う

PostgreSQL で function を使う際には LANGUAGE 句で言語を指定する必要があります。このとき LANGUAGE 'sql' と、指定すると複雑な構文が利用できません。PL/pgSQL の機能を使いたい場合、以下のように指定します。 LANGUAGE 'plpgsql' ですが、この LANGUA…