update TableA set Column1 =
(select TableB.Column1 from TableB where TableA.ID = TableB.ID )
where exists (select 1 from TableB where TableA.ID = TableB.ID );
update TableA set (Column1 , Column2 ) =
(select TableB.Column1 , TableB.Column2 from TableB where TableA.ID = TableB.ID )
where exists (select 1 from TableB where TableA.ID = TableB.ID );
もう。
わすれてたがな。
scripts (postgreSQL)
SELECT 結果でUPDATE
Jun 18, 2008 by maru | Add comment |postgres SQLチューニングの例。
Jun 10, 2008 by maru | Add comment |og_min_duration_statementを設定し、時間がかかっているSQLを見つける。
EXPLAIN ANALYZEを使って、どこに一番時間がかかっているのかを見つける。
だいたいめちゃおそのところは、Seq Scan?
[インデックスの張り忘れ]
[インデックスが定義済み]にもかかわらず、[インデックスが使われない]
処理の高速化は、いかに早い段階でアクセスする件数を絞り込めるかがポイント.
Explain Analyzeの見方の例がここにのってる。
http://www.atmarkit.co.jp/flinux/rensai/troubleshoot03/ts03c.html
なるほど。
漫然と見ててかんでやってたよ。
芯でいいですか?
EXPLAIN ANALYZEを使って、どこに一番時間がかかっているのかを見つける。
だいたいめちゃおそのところは、Seq Scan?
[インデックスの張り忘れ]
[インデックスが定義済み]にもかかわらず、[インデックスが使われない]
処理の高速化は、いかに早い段階でアクセスする件数を絞り込めるかがポイント.
Explain Analyzeの見方の例がここにのってる。
http://www.atmarkit.co.jp/flinux/rensai/troubleshoot03/ts03c.html
なるほど。
漫然と見ててかんでやってたよ。
芯でいいですか?
PostgreSQLのカタログから
Feb 09, 2007 by maru | Add comment |テーブル名を得る
select oid , c.relname AS tablename from pg_class c WHERE c.relkind = 'r'::"char";
カラム名を得る
select c.oid , c.relname as tablename , a.attname AS column from pg_class c
inner join pg_attribute a on ( c.oid = a.attrelid )
WHERE c.relkind = 'r'::"char";
area_id という名前のカラムがあるテーブル名を得る
select c.oid , c.relname as tablename from pg_class c
inner join pg_attribute a on ( c.oid = a.attrelid )
WHERE c.relkind = 'r'::"char"
and a.attname = 'area_id';
もういっつも忘れんの。
まいかいつくってんのこれ。
select oid , c.relname AS tablename from pg_class c WHERE c.relkind = 'r'::"char";
カラム名を得る
select c.oid , c.relname as tablename , a.attname AS column from pg_class c
inner join pg_attribute a on ( c.oid = a.attrelid )
WHERE c.relkind = 'r'::"char";
area_id という名前のカラムがあるテーブル名を得る
select c.oid , c.relname as tablename from pg_class c
inner join pg_attribute a on ( c.oid = a.attrelid )
WHERE c.relkind = 'r'::"char"
and a.attname = 'area_id';
もういっつも忘れんの。
まいかいつくってんのこれ。
PostGIS distance_spheroid
Feb 06, 2007 by maru | Add comment |"PostGIS上での経緯度の距離計算ですが、よくよく拡張関数リストを読んでみると、distance_spheroidなる関数が。
説明を読むと、「再投影もせんと距離が欲しいちゅうような不埒な輩はこの関数でもつことったらええがな」というふうに書いてある。"
ここギコ!: でけた!でけましたよ経緯度間の距離計算が!
ということでメモ。
pg_dump
Jan 30, 2007 by maru | Add comment |"データベースをダンプする例です。
$ pg_dump mydb > db.out
このデータベースをリロードする例です。
$ psql -d database -f db.out
mydb と呼ばれる BLOB を含むデータベースを tar ファイルにダンプするには下記のようにします。
$ pg_dump -Ft -b mydb > db.tar
このデータベース(BLOBを含むもの)を既存の newdb と呼ばれるデータベースにリロードします。
$ pg_restore -d newdb db.tar"
pg_dump
PostgreSQL tuning technique
Nov 26, 2006 by maru | Add comment |PostgreSQL:チューニング勘所 - Y-110's Wiki
Nov 21, 2006 by maru | Add comment |PostGresql テーブル名とカラムメイの一覧取得SQL
Sep 11, 2006 by maru | Add comment |PostGresql テーブル名とカラムメイの一覧取得SQL
何度も忘れるから、メモ。
select
pg_class.relname as tablename,
pg_attribute.attname as columnname
from
pg_attribute
inner join pg_class on ( pg_attribute.attrelid = pg_class.relfilenode )
where
pg_attribute.attnum > 0
and pg_class.relname not like 'pg_%'
order by pg_attribute.attnum;
何度も忘れるから、メモ。
select
pg_class.relname as tablename,
pg_attribute.attname as columnname
from
pg_attribute
inner join pg_class on ( pg_attribute.attrelid = pg_class.relfilenode )
where
pg_attribute.attnum > 0
and pg_class.relname not like 'pg_%'
order by pg_attribute.attnum;
リモートクライアント接続
May 13, 2005 by maru | Add comment |リモートPCから接続するには、以下のような設定を行う。
pg_hba.confで接続許可するホストを指定
host all 192.168.1.0 255.255.255.0
PostgreSQLのチューニング - [データベース]All About
Jan 07, 2005 by maru | Add comment |CREATE FUNCTION plpgsql
Jan 04, 2005 by maru | Add comment |1. Creata a function handler:
CREATE FUNCTION plpgsql_call_handler() RETURNS language_handler AS
'$libdir/plpgsql' LANGUAGE C;
2. Create the language 'plpgsql'
CREATE TRUSTED LANGUAGE plpgsql
HANDLER "plpgsql_call_handler";
3. ... and I don't know if is a god thing to :
GRANT USAGE ON LANGUAGE plpgsql TO public;
CREATE FUNCTION plpgsql_call_handler() RETURNS language_handler AS
'$libdir/plpgsql' LANGUAGE C;
2. Create the language 'plpgsql'
CREATE TRUSTED LANGUAGE plpgsql
HANDLER "plpgsql_call_handler";
3. ... and I don't know if is a god thing to :
GRANT USAGE ON LANGUAGE plpgsql TO public;