タグ

sqlとPostgreSQLに関するd_animal141のブックマーク (12)

  • 「INDEXによる高速化」は本当なのか!?PostgreSQLでパフォーマンスチューニングしてみた - Developer’s Blog

    かなり長いので不要部分は省略します。 Sort (cost=478905.76..478905.77 rows=1 width=215) (actual time=1213518.262..1213518.264 rows=22 loops=1) Sort Key: z.mdd Sort Method: quicksort Memory: 31kB -> Subquery Scan on z (cost=478905.73..478905.75 rows=1 width=215) (actual time=1213518.163..1213518.245 rows=22 loops=1) Filter: (z.joutai = 1) -> Unique (cost=478905.73..478905.74 rows=1 width=215) (actual time=1213518.158

    「INDEXによる高速化」は本当なのか!?PostgreSQLでパフォーマンスチューニングしてみた - Developer’s Blog
  • How to Create Postgres Indexes Concurrently in ActiveRecord Migrations

    How to Create Postgres Indexes Concurrently in ActiveRecord Migrations
  • テキスト検索の方法とインデックス | Let's POSTGRES

    板垣 貴裕 テキスト検索にもさまざまな方法があります。大量のテキストを検索するにはインデックスを使って検索したいところですが、どんな検索にも応えられるインデックスというものは、さすがに存在しません。それぞれのアプリケーションの条件に適したテキスト検索方法やインデックスの張り方を選んで行きましょう。 今回説明するテキスト検索の方法の一覧を以下に挙げます。PostgreSQL ユーザが「全文テキスト検索」というと「単語単位の検索」を指すことが多いようです。また、「中間一致検索」が「あいまい検索」と呼ばれることもあるようです。用語が厳密な意味で使われないことも多いようなので、文脈には注意して解釈してください。 「単語単位の検索」と「中間一致検索」では、追加のモジュールを導入することで日語全文検索が可能なインデックスを作成できます。こちらは説明の後半で紹介します。以下、記事の内容です。 テキス

  • PostgreSQLの実行計画について調べてみた | Casley Deep Innovations株式会社 技術ブログ

    はじめに 初めまして、キャスレーコンサルティング SI(システム・インテグレーション)部の松です。 業界3年目にして、実行計画を一度も見たことがなかった私が、 「実行計画とは何か、どのように取得するのか。」について調べた結果をまとめました。 ※ブログでは、PostgreSQL Tutorialより提供されているdvdrentalというDBをサンプルに用いております。 目次 1.実行計画とは 2.実行計画の取得方法 2.1.EXPLAIN文 2.2.オプション(ANALYZE,FORMAT) 2.3.ANALYZE文 3.実行計画の構造 3.1.ノードのツリー構造について 3.1.1.テーブルスキャンノード 3.1.2.結合系ノード 3.1.3.その他のノード 3.2.処理コストの確認方法 4.まとめ 1.実行計画とは 実行計画とは、ユーザによって発行されたクエリを実行するための手順書の

    PostgreSQLの実行計画について調べてみた | Casley Deep Innovations株式会社 技術ブログ
  • えっ、まだPostgreSQLでダブルクォーテーション使ってるの? - Qiita

    するとこれ、エラーで返ってきました。 (エラーメッセージはうろ覚えですが「value1なんてカラムは存在しないよ」的なことを言ってました) PostgreSQLでは、ダブルクォーテーション「”」をシングルクォーテーション「'」にしないといけません。なので、以下のように変更します。 「”」と「’」の違い PostgreSQLなどの標準SQLでは、 シングルクォーテーションで囲う:文字列定数として扱う ダブルクォーテーションで囲う:カラム名として扱う という仕様になっている。 'value1'はvalue1という文字列として捉え、"value1"はvalue1というカラムの名前として捉えられます。 テーブルになにか文字列を挿入するときはシングルクォーテーションで囲ってやらないと、SQLが文字列として認識してくれないわけです。 つまり、文字列定数をダブルクォーテーションで囲うな!ということです。

    えっ、まだPostgreSQLでダブルクォーテーション使ってるの? - Qiita
  • [Redshift][PostgreSQL] WITH句を使ってSQLをシンプルに。 | DevelopersIO

    環境 MAC OSX 10.10.5 Yosemite 使い方(例) テーブルの準備 CREATE TABLE items ( id SMALLINT , name VARCHAR(16) , item_id SMALLINT , item_name VARCHAR(16) , PRIMARY KEY(id, item_id) ); INSERT INTO items VALUES (1, '文房具', 1, 'シャーペン') , (1, '文房具', 2, '消しゴム') , (1, '文房具', 3, '定規') , (2, 'かばん', 1, 'リュックサック') , (2, 'かばん', 2, 'ショルダーバッグ'); CREATE TABLE genre ( id SMALLINT , name VARCHAR(16) ,PRIMARY KEY(id) ); # SELECT *

    [Redshift][PostgreSQL] WITH句を使ってSQLをシンプルに。 | DevelopersIO
  • Random "SELECT 1" query in all requests on rails

  • PostgreSQLのbackup, restore方法まとめ - Qiita

    (1) PostgreSQLのダンプツールを利用したバックアップ pg_dumpコマンド DBを運用しながらでも使えるbackupコマンド 中ではトランザクションブロック内でSELECT文を発行し、取得したデータを出力形式に合わせて整形した腕標準出力に出力 するらしい。 pg_dumpの出力形式 スクリプト形式(デフォルト) アーカイブ形式 が選択できる。 スクリプト形式 スクリプト形式の出力は、リストアに必要なSQL文の羅列が出る。 ので、psqlコマンドでリストアする。 スクリプト形式の場合はプレーンテキストなので、リストアの際にエラーが出たら、中を見れるという利点がある。 アーカイブ形式 バイナリの形で出力される。リストアはpsqlコマンドでなくpg_restoreコマンドで行う。 アーカイブ形式の利点は、 「指定したtableのみを選択してリストアできる」ことらしい。 また、アーカ

    PostgreSQLのbackup, restore方法まとめ - Qiita
  • 第2回 一番の基本、シーケンシャルスキャン | gihyo.jp

    さて、前回の大まかな地図を元に、第2回では実際に問い合わせ手法の詳細について見ていきます。最初に取り上げるのはシーケンシャルスキャンという、データベース検索の最も基になるアクセス手法です。 シーケンシャルスキャンとは シーケンシャルスキャンは、日語に直訳すると「順次検索」という形になります。端的に言ってしまえば「すべてのデータを順に検索する」ということで、結果として通常はすべてのデータを読み込んで返します。その後、検索条件や取得件数などの必要に応じてフィルタリングが行われることもあります。この方法は、すべての件数を対象として検討するため、条件を選ばず使えます。そのほか、どんな複雑なSQLが来てもシーケンシャルスキャンなら取りこぼしがありません。たとえばなんの変哲もない といったSQLを実行するに当たっては、シーケンシャルスキャンを使います。 図1 シーケンシャルスキャンの実行形 シーケ

    第2回 一番の基本、シーケンシャルスキャン | gihyo.jp
    d_animal141
    d_animal141 2016/01/22
    一番の基本,シーケンシャルスキャン|gihyo.jp
  • PostgreSQLのフィールドにハッシュ形式(hstore)でデータを登録する

    PostgreSQLでは、hstoreというハッシュ形式でデータを保存するデータ型があるようなので試してみました。 試したのは、Arch LinuxにインストールしたPostgreSQL 9.1.3です。

    PostgreSQLのフィールドにハッシュ形式(hstore)でデータを登録する
    d_animal141
    d_animal141 2015/11/12
    PostgreSQLのフィールドにハッシュ形式(hstore)でデータを登録する
  • 論理削除と一意性制約を両立させる方法・DB製品別 - Qiita

    アプリケーション上でなにかエントリ(例えば記事だとかユーザだとか)を削除したとき、DB上の行は削除せず単に【削除済み】フラグを立てるだけという扱い方を 論理削除 と呼びます。 論理削除にはいろいろなメリットがあります。行削除のように関連する他テーブルへ削除が波及しないこと、エントリ復活ができること、障害時にデータ変更の経緯を追いやすくなることなどなど(デメリットもわんさかあるんですが、この記事の主旨からははずれるので別途お調べください)。 ところが論理削除の方針でDBを組んでいて困ったことはありませんか? 「 メールアドレスは一意性(UNIQUE)制約をかけたいのに、それだと削除済みのユーザと同じメールアドレスが使えないことになる 」 論理削除と一意性制約、両立はできないのか? できないと思っている方、多いと思います。実はちゃんとできます。DB製品によって実現方法がちょっと違ってくるだけで

    論理削除と一意性制約を両立させる方法・DB製品別 - Qiita
    d_animal141
    d_animal141 2014/08/16
    SQL - 論理削除と一意性制約を両立させる方法・DB製品別 - Qiita
  • PostgreSQLは、SELECTもロックを獲得する - 地平線に行く

    PostgreSQLは、SELECT文を実行すると暗黙的にロックを獲得するということを、システムを止めて初めて知りました。 なので、こういうSQLはまずいです。 SELECT * FROM FooTable; LOCK TABLE FooTable; これを二つ同時に実行するとデッドロックが発生します。 これは、2つのコマンドプロンプトで 画面A BEGIN; // トランザクションの開始 画面B BEGIN; // トランザクションの開始 画面A SELECT * FROM FooTable; 画面B SELECT * FROM FooTable; 画面A LOCK TABLE FooTable; 画面B LOCK TABLE FooTable; と実行すると再現できます。 なんで? 2行目のテーブルロックは、そのトランザクション以外にテーブルにアクセスするトランザクションがないことを保

    PostgreSQLは、SELECTもロックを獲得する - 地平線に行く
    d_animal141
    d_animal141 2014/04/13
    PostgreSQLは、SELECTもロックを獲得する
  • 1