トップページphp
1001コメント345KB

PostgreSQL

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2001/05/09(水) 11:36ID:GHX.oCXo
PostgreSQLについて語りましょう。
関連アプリケーション特有の話題は、以下のスレッドへ。

☆関連スレッド
[PHP + PostgreSQL]
http://corn.2ch.net/test/read.cgi?bbs=php&key=983128806
[PHP以外+PostgreSQL]
http://corn.2ch.net/test/read.cgi?bbs=php&key=988929199
[MySQL vs PostgreSQL]
http://corn.2ch.net/test/read.cgi?bbs=php&key=989341364
0201nobodyさん02/03/12 14:01ID:???
テーブルにハイフンつきで入ってる電話番号を、
ハイフン無しの数字で検索したいんだけど、
どうすりゃいいんでしょ。

create table tel(
name varchar(100),
tel_no varchar(16)
);

select * from tel;
name | tel_no
-----+---------------
aaaa | 03-3333-1111
bbbb | 03-3333-2222
cccc | 03-3333-3333

Webのフォームからは、0333331111と入力して検索したい
んですが、どんなクエリにしたらいいですか。
0202nobodyさん02/03/12 14:14ID:???
>>201
あらかじめ検索用にそういうデータ作っておくのが一番かと。
046-6xxと
04668-2xを、どう区別するの?とかいろいろ問題出そうだから。
020320102/03/12 14:38ID:???
>>202
正規表現とかなんとかでどうにかなりませんかね。
PostgreSQL7.1.3です。
0204191=19402/03/12 20:48ID:???
>>196
遅くなりましたけど、お答えありがとうございました。
701にしてFTPからでも見られないようにしました。
責任者曰く、テスト的な導入だからそういう設定はしていないでした。
将来的にするそうです。
0205名無しさん02/03/12 22:43ID:???
データベースの設計に問題あり。
0206.02/03/13 02:31ID:???
重複行を物理的(?)に削除する方法ってありますか?
SELECT DISTINCT でなくて、実際に行を削除したいのです。

BEGIN;
CREATE TABLE temp AS SELECT DISTINCT * FROM table;
DELETE FROM table;
INSERT INTO table SELECT * FROM temp;
DROP TABLE temp;
END;

なんてしないとダメなんでしょうか?
0207nobodyさん02/03/13 16:51ID:JEuVnqmD
oidを使えばなんとなかる。
0208nobodyさん02/03/14 06:59ID:k3DW28WH
PostgreSQLに画像を格納したいんだけれど、どうすんの?
で、それをphpから読み出したいんだけど?
0209nobodyさん02/03/14 07:59ID:???
>>208
ラージオブジェクトで検索すれ
0210nobodyさん02/03/14 19:18ID:fh47mHav
>>208
PHP マニュアルと、Postgres のマニュアルを読もう。

読み出しについてだけヒント。
SQL はトランザクションブロック内に。
pg_loexport() でSQL 実行結果から切り出す。
0211nobodyさん02/03/14 21:43ID:k3DW28WH
>>208
>>209さんありがとうございます。

マニュアル読んでも、よく解らなかったので、ラージオブジェクトを
扱っている書籍等、ありましたらお教えください。

ってゆうか、今INSERTの所でつまずいています。
0212nobodyさん02/03/14 22:54ID:???
>>211
質問時の鉄則。
「何が」わからないのかを書く。
「やったこと」を書く。
「どのように」うまくいかないのかを書く。
0213nobodyさん02/03/15 19:01ID:UO4e/HO0
初心者的な質問スマソ。
Postgres7.2なんですけど
createdb test
でデータベースtestをつくり
psql test
として
create user hoge with password 'hoge'
としてユーザhogeを作成しました。
この状態でCommonSQLEnvironmentで接続しようとすると
認証に失敗して接続できません。
ユーザ名hoge、パスワードhogeです。
ちなみにpg_hba.confは次のようにしてます。
host all 192.168.5.11 255.255.255.255 crypt
IPはもちろん自分のIPです。
何かとてつもない勘違いでもしてるんでしょうか?
0214nobodyさん02/03/15 19:47ID:???
>>213
「CommonSQLEnvironmentで接続」って何?
API直で使ってるとか何か?
0215nobodyさん02/03/15 20:53ID:pbklnejV
>>214
これです。
http://www.hi-ho.ne.jp/tsumiki/
0216nobodyさん02/03/15 23:21ID:???
>>213
Grantしていないのでは?
0217nobodyさん02/03/16 11:26ID:???
>>216
特定のテーブルに対してはしてます
0218nobodyさん02/03/16 12:15ID:???
>>217
エラーlog見れ。
0219nobodyさん02/03/16 14:11ID:???
>>218
[1] FATAL 1: Password authentication failed for user "hoge"
としか出てません
0220nobodyさん02/03/17 03:21ID:???
>>217
一度psqlでhogeユーザになってログインしてみては
0221nobodyさん02/03/17 14:52ID:bGzRpwXX
ちょいと質問なんですが、PHP+Postgreでユーザー登録の仕組みを作ってます。
で、ユーザー名(text)は大文字/小文字区別しなくて重複させたくないので、
(たとえば、"Hoge"がもう存在したら"hoge"も"HOGE"も弾きたい。)
select username from userdata where username ~* '$username' で
重複を探しています。
usernameに+や?や*を使った場合エラーが出てしまいます。
あらかじめPHPのquatemetaでバックスラッシュはつけてあるのですが…
なんかうまい方法はないものでしょうか?
0222nobodyさん02/03/17 15:06ID:???
>>221
>usernameに+や?や*を使った場合エラーが出てしまいます。

使用禁止にすりゃいいじゃん。ダメ?
0223nobodyさん02/03/17 15:16ID:???
SELECT username FROM userdata WHERE lower(username) = lower('$username');
022422102/03/17 23:43ID:bGzRpwXX
>>222,223
どうもありがとう。quatemetaはquotemetaでした。
>>222
usernameといっても、ニックネームみたいなもので
実際外人さんなんかでは記号使いたがる人もいるんで、
できれば制限はつけたくないんです。
>>223
これで使えそうです。日本語でも大丈夫ですよね?
(自分で試してみた範囲では特に問題なさそうでしたが)
022522302/03/18 00:30ID:???
>>224
quotemetaだけじゃなくてSQLのメタキャラクタも変換する事をお勧めする。
' → ''など
022620602/03/18 21:58ID:???
>>207
スマソ。いろいろやってみたけどわかんない。
oid を使って速度的に >206 で書いたのより速い SQL って書ける?
0227nobodyさん02/03/20 10:54ID:txl31ITf
>>226
「物理的に」っつー意味が良くわかんねーのだが。

デリートフラグが付いたものを、物理的にデータファイルから消す、という意図なら、
バキュームするしかないだろう。

>206のやりかたでも、postgresの仕様では「物理的」には、削除できないと思われ。


DISTINCTをつかって取得されるデータセットの上で、重複行を見えなくする(一つ
にまとめる)ことを例えば「論理的に削除」と呼ぶとして、これに対しての、「物理的
に削除」(Delte文での削除)、と言っているのならば、単純に重複行をoid使って削
除すればいいだけだと思うが。

テーブルのサイズにも寄るだろうが、oidを使って、削除するものが、>206より速度
的に劣るとは、絶対に思えん。


もしかして・・・・oidの概念とか、oidの使い方がわからないんかい?
0228その102/03/20 11:08ID:txl31ITf
こんな感じかな。思いつき&未検証スマソ。

>create test (a integer);
CREATE
>insert into test values (1);
INSERT 123055 1
>insert into test values (2);
INSERT 123056 1
>insert into test values (1);
INSERT 123057 1
>select * from test;

a
---
1
2
1
(3 rows)

>select distinct * from test;

a
---
1
2
(2 rows)

>select oid, a from test;

oid | a
-------+--
123055 | 1
123056 | 2
123057 | 1





0229続き02/03/20 11:09ID:txl31ITf
>delete from test where a=1 and oid<>(select max(oid) from test where a=1);
DELETE 1

>select * from test;
a
---
1
2
(2 rows)

>select oid, a from test;

oid | a
-------+--
123056 | 2
123057 | 1
(2 rows)
023020602/03/20 11:09ID:OKaF+07y
>>227
スマソ、後者。

DELETE FROM table WHERE oid = 重複

の「oid = 重複」の書き方がわかんないんす。
oidについては知ってるツモリ。
それとも、漏れ、わかってねぇ?
023120602/03/20 11:12ID:OKaF+07y
おう、カキコしてるあいだにサンプルが。THX。

でもこの消したい行がわんさかあるんですわ。
サブクエリとか使いまくったら何とかなるかな。。。
0232227(=228=229)02/03/20 13:46ID:txl31ITf
>>206
このサンプル、ちゃんとサブクエリ使っておいた。
oid最大のものだけ残して、あとはすっかりきれいにしてくれるはずだ。
023322702/03/20 14:26ID:txl31ITf
>206
>232では、勘違いしてた。削除対象そのものがたくさんあるって事だね。
うまいこと工夫してサブクエリ組み合わせるのもいいが、
次のようなファンクションを核のも手だぞ。

CREATE FUNCTION testfunc() RETURNS INTEGER AS '
DECLARE
rs RECORD;
va INTEGER;
BEGIN
FOR rs IN SELECT a FROM test GROUP BY a HAVING count(*)>1
LOOP
DELETE FROM test WHERE a=rs.a AND oid<>(SELECT MAX(oid) FROM test WHERE a=rs.a);
END LOOP;

RETURN 0;

END;
' LANGUAGE 'plpgsql';

plpgsql使ってるけどな。ファンクションの返り値は適当に工夫しる。
0234nobodyさん02/03/22 08:23ID:???
7.2 にした人、バキュームしてる?
0235nobodyさん02/03/25 00:06ID:n+2iUXgj
postgreである文字列を検索するとき、
LIKE句使うのと、正規表現使うのでは、どちらの方がパフォーマンス的に
良いのでしょうか。
0236nobodyさん02/03/25 00:23ID:hKhhq3k3
LIKE
0237nobodyさん02/03/25 00:39ID:???
>236
うそを言っちゃダメ!
Learning PostgreSQL という参考書にちゃんと書いてあるYO!

P224-225
「PostgreSQLでは、LIKEや正規表現の検索にインデックスが使われないため、
検索速度が劣化します。前方一致検索だけは例外で、この場合だけはインデックス
が使われて高速検索が可能になります。」
023823502/03/25 01:27ID:n+2iUXgj
>>236-237
ありがとうございますた。
0239 02/03/25 01:30ID:t/0Pfn5b
PostとMyってどっちが使えるの〜。
Oracleと比較した場合はどうなる?
教えてちょーだい!
0240nobodyさん02/03/25 02:23ID:Tru1yM6S
商用RDBとの比較って難しいんじゃないの?
利用目的にもよると思うけど。
とりあえず中小規模の社内システム程度なら、
オラ来る使う必要無いケースなんて多いっしょ。
0241Dream ★02/03/25 02:38ID:???
>>239-240
ビンボ人としては、そういう比較できるのがうらやましいです。
お金あるんだったら有無を言わずOracleがいいと思います。
トラブルの時や、コーディング行き詰まったら痛感すると思います。
0242nobodyさん02/03/25 02:43ID:???
確かに、サポートが気軽に使えるのは安心。
OpenSourceでも、意外とWebでサポートに近いくらいの情報集められたりするけどね。
情報収集力も、スキルのうちってか。
0243nobodyさん02/03/25 02:49ID:???
この記事は、なかなか興味深い。

http://japan.internet.com/linuxtutorial/20020219/1.html
「基幹業務にオープンソースの DB は使えるか」から抜粋。
------------------------------------
もうひとつ、われわれ主催者である OSDN のネットワークには非常に多くのサイトがある。
OSDN.com をはじめとして Slashdotスラッシュドット、SourceForge、Freshmeat、Linux.com などの
ほとんどのサイトでバックエンドで動いているのは MySQL だ。特に、Slashdot や SourceForge では
非常に多くのアクセスがあり、しかもほとんどのデータもメッセージもシステムごと DB に格納されているので
非常に大きな負荷がかかるが、スムーズに動いている。

Slashdot のシステムはオラクルでも PostgreSQL でも動くが、 MySQL ほどのスピードが実現できない。
Slashdot は毎月4000万 PV 以上あり、登録ユーザーが25万人いる。 Web サーバーが8台、
DB サーバーは1台だけある。 Web サーバーにはいつ落ちてもおかしくないような負荷がかかっているのだが、
リクエストを受ける MySQL の DB サーバーはいつもスムーズに動いている。
0244Dream ★02/03/25 03:03ID:???
>>243
チューニングする人の腕とか、カスタムチューンの話抜きだから、
ちょっと間引いて聞きたい内容ですけどね。
なるほど〜って思うところもありました。
0245nobodyさん02/03/25 14:29ID:NfHuoItu
PostgreSQLとmySQLの比較。
比較しがたいもの、Linux DBMS パート3--1
http://japan.internet.com/linuxtutorial/20001216/1.html
>真の RDBMS が必要なら PostgreSQL を選択するしかない。実際のパフォーマンス
>が重要なら、小規模なシステムほど良い結果を得られるだろう。特にデータベースへ
>のアクセスが単純でほとんど自動的である場合はそうだ。
>mSQL と MySQL は、このような理由で Web データベース システムとして宣伝されている。

トランザクション機能をとりあげて、PostgreSQLに分があるか、のような言い方をしてる
ともとれる。
…が、そもそもそこまでの機能が要されるものが果たしてどれくらいWebで存在
するのだろうか?
おそらくまっとうな正規化すら要求されていないのでは?と想像。
0246nobodyさん02/03/25 14:32ID:???
Web系なら、速度の点でPostgreSQLよりはMySQLだろ。
0247nobodyさん02/03/26 04:35ID:DXFNnhOw
 MySQLはSELECTのみ頻発するサイトならいいが、イントラ系などなら自動的に
PostgreSQLだと思われ。せこいけど、企業ポータルなどではMySQLはライセンス
料かかりそうだし。
0248nobodyさん02/03/26 11:30ID:eWERFRsP
>>247
>MySQLはライセンス料かかりそうだし。

これ払っていないとこ多そうだね。
0249nobodyさん02/03/26 14:50ID:pCSwfjmM
必要ないのかもしれないんだけど
テーブルのカラム名の順番変えたいんだけど
方法ってありますか?
手持ちの完全攻略ガイドに無いので、存在しないのかなと思ったり思わなかったり。
select * from table の見栄えが悪いの気持ち悪い・・・
0250nobodyさん02/03/26 15:20ID:???
>249
かえれば?
0251nobodyさん02/03/26 16:10ID:pCSwfjmM
>>250
どうやって?
0252nobodyさん02/03/26 16:11ID:???
>>251
delete shite tsukurinaosu
0253nobodyさん02/03/26 16:11ID:pCSwfjmM
>>252
辛いなぁ…
0254nobodyさん02/03/26 16:34ID:???
丸ごと別データに取って、一度消してからインポートし直したら?
そのくらいのスクリプト朝飯前でしょ?
0255nobodyさん02/03/27 01:41ID:dp2z17TY
>>248
MySQL って今でも商用利用にお金かかるの?
無償で使えるようになったと聞いたんだけど・・・?
025625502/03/27 01:47ID:dp2z17TY
調べてきた。
MySQL は GPL と 商用ライセンスのデュアルライセンスなんだね。
http://www.softagency.co.jp/order/license.html

ちなみに、Postgres は BSD ライセンス。
0257nobodyさん02/03/27 02:08ID:???
うーむなるほど、たとえばJavaでTomcat使った製品を、MySQLバンドルして売るなんて場合は商用ライセンスになるわけか。

じゃあたとえば、MySQLを含まない製品を、製品動作に必要なMySQLのDBのみ含めて販売した際に、
MySQLの導入を無償のサービスとして行う場合は、商用ライセンスに該当する?
0258nobodyさん02/03/27 02:13ID:???
>>257
>MySQL が無くては絶対に動作しないものを MySQL サーバーと併せて売る場合。
に該当すると思われ。
0259nobodyさん02/03/27 02:28ID:???
>>258
サンクスコ。
やはり選択肢としては、ポスグレってことか・・・
026025802/03/27 02:36ID:???
258 ではああかいたけど、やっぱ微妙だなー。
>257は、MySQL サーバと併せて「売ってる」ワケじゃないな。
該当しないかも。

・MySQL のサポート、インストールや管理を有料で行った場合。
これは売り切りであとはサポート無し、という契約なら該当しないかな。
一切のサポート無しの契約なんて、普通しないもんね。
0261nobodyさん02/03/27 02:46ID:???
>>260
難しいんだねぇ・・・
ま、とりあえずビジネスベースでMySQL使うなら、大人しくライセンス買っといたほうがいいってことだね。
顧客的にもそのほうが後々、幸せだろうし。
0262nobodyさん02/03/27 02:55ID:???
>>260
売ったあとの信用問題とかあるしね。
金で解決できるのであれば。
0263nobodyさん02/03/28 04:46ID:xQXjNFYd
 MySQLは、ストアドとトランザクションとWAL(ノンアーカイブドREDO
ログ)の実装は終わったのかな?
0264hogehoge02/04/08 13:09ID:AYJuT8cH
pgsql-jpMLで話題になってる「pg_dumpのデータ欠落」問題って
デカイ話だと思うんだけど、なんでみんな冷静ですか。
MLにも出てるけど
ttp://www.sankyo-unyu.co.jp/Pool/PostgreSQL.htm
ここのパッチでみんな解決したのかなあ。
0265nobodyさん02/04/22 00:13ID:1DFRB74b
結局PostgreSQLとMySQLと両方勉強するはめになるのね、、、
0266nobodyさん02/04/22 00:30ID:OmlBepHH
>>265
そんなもんだよ。
私はPostgres と Oracle と MySQL と InterBase と パラドックス使ってる。
0267nobodyさん02/04/22 14:06ID:7LCMI0nt
PostgreSQL-7.2.1 と Access2000 接続がうまくいきません。
以下のようなエラーがでてしまいます。


ODBC--呼び出しが失敗しました。
Error while executing the query.
ERROR: tablename: Permission denied. (#7)


PostgreSQLは Redhat Linux 7.2 で動かしていて、
psqlでの操作、table作成、
同マシン上でのJDBC経由での操作は問題ありません。
また、Access2000でpsqlで作成したtableの一覧はでてきており、
テーブルのリンクは作成できてます。
しかし、そのテーブルのリンクを開こうとすると、上記のエラーが
出てきてテーブルの中身は見ることができません。
何が原因なのでしょうか?
0268nobodyさん02/04/22 19:57ID:???
パーミッションが原因です
026926702/04/22 21:01ID:???
ネット上に転がってたdllを使ったらうまくいきました。
0270nobodyさん02/04/23 16:58ID:ScEW9CB6
マルチバイトって言うか日本語の検索なんですが
name | ocupation
鈴木一郎 | 野球選手
鈴木三郎 | タバコ屋
鈴木一郎 | 野球選手
鈴木次郎 | 魚屋
鈴木宗男 | 政治家
に対して
SELECT * FROM a_table WHERE name = '鈴木一郎';
した場合、全部出て来ちゃいます。
LIKE や "~" など正規表現では問題ないのですが。このためGROUPもできないのれす。
7.1の時は自分の環境じゃ起きなかったのに7.1.3からそうなるようになっちゃったです。
今まで放っておいたんですが、やっぱり治したい…。もちencodingはEUC_JPなんですけど。
027127002/04/23 17:25ID:ScEW9CB6
今、自分でちょっとやってみたんですが、どうも
例えば 鈴木喜三郎、田中一郎、大林素子を含むレコードに
鈴木一郎をSELECTした場合、鈴木喜三郎以外、全部出る…
田中一郎をSELECTした場合、 鈴木喜三郎以外、全部出る…
どうもSTRING長しか見てないような気がする…
0272nobodyさん02/04/23 22:27ID:us8x58hp
>>270
 環境作って試験しましたがなりません。
 実験手順は以下です。

1.PostgreSQL 7.13 を準備
2.SQL: create table house (name varchar(100),occupation varchar(100));
3.EUC/TAB区切りで >>270 の一覧を作成
4.\copy でインポート
5.SELECT * from house where name='鈴木一郎';

 もし本当なら PostgreSQL Users-ML の方にポストするべきです。
 入力した日本語文字コードがEUCかチェックを希望。
0273nobodyさん02/04/23 23:07ID:???
MySQL-Max4.0.1がこんなに凄いとは知らなかった...
http://www.mysql.com/news/article-91.html
http://www.eweek.com/article/0,3658,s=708&a=23115,00.asp
http://www.eweek.com/slideshow/0,3018,sid=0&s=1590&a=23120,00.asp
0274nobodyさん02/04/24 00:57ID:AExlUipD
>>273
 トランザクションも、オンライン・アーカイブ・ログも、ストアド・
プロシージャーも無いデーターベースを凄いといわれても・・・。
0275nobodyさん02/04/24 02:28ID:???
あれ? Maxはトランザクションはあると聞いたけど。
0276nobodyさん02/04/24 10:40ID:zrCVc2f4
>>274
MySQL-Max(InnoDB)はトランザクションに対応してますよ。
コンパイル時にそう設定されているだけなので、MySQLとMySQL-Maxは
お好みに合わせて使い分けることになると思います。
0277nobodyさん02/04/24 10:42ID:zrCVc2f4
>>274
ストアド・プロシージャーがなくても困ることはほとんど無いですよ。
それに頼る設計方針を見直すべきだよ。
0278nobodyさん02/04/24 10:46ID:zrCVc2f4
>>274
ベンチマークにエントリさえもされないPostgreSQLの立場って。
0279nobodyさん02/04/24 12:48ID:PorNOKJ/
 有料の低機能DBのMySQLなんか使えんと思われます。
 PostgreSQL使いましょう。

 まあ、MySQLの劣っているところも理解できない厨房であれば、
利用もやむを得ないけど。

>>276
 トランザクションを利用すると、劇的に遅くなるよ。
 一気に処理が複雑になるからね。だからMySQLの特徴が消える。

>>277
 複雑な演算で速度出すときには必要です。
028027002/04/24 14:51ID:YiGTDcvn
>>272
ありがとうございます。お手数を感謝いたします。
入力した文字コードもEUCなんですが、PostgreSQL Users-ML に
ポストするしかないのですか。トホホ。
0281nobodyさん02/04/24 15:18ID:???
MySQL って有料なの?
0282nobodyさん02/04/24 15:44ID:PorNOKJ/
>>281
 商用利用は有料。詳細は調べてくれ。
0283nobodyさん02/04/24 17:40ID:zrCVc2f4
>>282
GPL?
0284nobodyさん02/04/24 17:42ID:zrCVc2f4
>>279
何か資料ありますか? 無いんでしょ?
また、トランザクション入れてもほとんど変わらないですよ。
また、複雑な演算処理の例を教えてください。
0285nobodyさん02/04/24 17:44ID:zrCVc2f4
>>279
WEB+DB PRESS の vol.4 の記事読んでみな。
0286nobodyさん02/04/24 17:45ID:zrCVc2f4
>>279
Delphi6 や Kylix や C++Builder6 のdbExpressでは、MySQLへの接続は
サポートされているけど、PostgreSQLへの接続はサポートされていない
んですよ。なんとかしてくれ。
0287nobodyさん02/04/24 18:29ID:zrCVc2f4
Googleに聞きました

What is the most popular RDBMS? Is it MySQL?
約3,410件

What is the most popular RDBMS? Is it PostgreSQL?
約2,860件

MySQL beats PostSQL. :-)
0288nobodyさん02/04/24 20:36ID:/PnzmLOG
初歩的な質問で申し訳ないんですが、データがあれば更新して、なければ挿入す
るって簡単に書けないのでしょうか ?

例えば、社員名簿のアプリケーションで、社員番号と社員データを元に更新/挿入
をやりたいんです。今は、更新してみて更新されたタプルが 0 だったら、改めて
挿入してるんですけど、1つの SQL で書けないのでしょうか ?
0289nobodyさん02/04/24 20:43ID:???
おらにはUPSERTってのがあるって聞いたけどな。
029028802/04/24 21:19ID:???
う〜〜〜む、UPSERT は Ora9i でサポートかぁ...。じゃあ、Ora9i
でって...、いくわけないですよね。ほとんど数人でしか使わないローカ
ルデータベースだしねぇ。まあ、Ora8x でサポートしていないぐらいだか
ら、大体の DB じゃサポートしてなさそうですね。心おきなく、今までの
方法 (Update + Insert) で行きます。ありがとうございました。
0291nobodyさん02/04/25 11:06ID:???
制限か何かで 120996 という数字に思い当たるフシのある人います?

0292nobodyさん02/04/25 14:58ID:e1QGMeHX
>>290
 ストアド・ファンクションをPLPGSQLで書けば代わりになります。

1.挿入/更新対象をSELECTする
2a.存在 →
2b.非存在 →

 PostgreSQLオブジェクトは複雑になりますが、処理速度は向上します。
 プログラム側で2回のクエリーが1回にで済むからです。
 またプログラム側の処理が単純になりますね。
0293nobodyさん02/04/29 00:48ID:oAtRhIR1
ストアドいいんだけどなぁ。。。

関係ないけど、Ora系の業務だと、ストアドで10Kとかあるんだよね、よく。
デバッグ環境ももろくにないから泣きそう泣きそう…。
0294nobodyさん02/05/03 21:41ID:/0wZrz3p
>>279,292

Postgresのファンクションって、Oraなんかと違って、
コンパイル(?)して無いよね?

実行時のスピードって、向上してない気がするんだけどな、俺。
それとも単に、俺のクエリがへぼイだけ?


#久々に覗いたら、にぎわってるなココ。

0295名無しさん@XEmacs02/05/03 22:11ID:???
でも、C言語でも書けるし。
特に処理が重くなりそうな場合、Cで書くのもいいと思いますヨ。
0296nobodyさん02/05/12 03:17ID:bKfXEgEZ
CSE(Common SQL Environment)を使っているのですが、
postgresのテーブルの定義書を出力しても、
出力されたExcelファイルの中に、外部キーに関する情報が含まれていません。
これは、CSEのバグ(仕様?)なんでしょうか?
あるいは自分の設定かなにかが違うのでしょうか?
0297nobodyさん02/05/12 04:17ID:RwG45MrU
>288
MySQLにはreplace intoというのがあるよ
0298nobodyさん02/05/12 20:30ID:jWhbjITO
>>249 亀レスだが、スクリプトなんぞいらん。さくっとSQL使え

create table moto (c2 int,c1 int);
create table shin as select c1,c2 from moto;
drop table moto;
alter table shin rename to moto;
0299nobodyさん02/05/12 22:38ID:q4IRLeqO
>>298
 制約が消えませんか?
0300nobodyさん02/05/13 14:00ID:bpGvMvHb
>299 じゃあ、ちゃんとしたCREATE TABLEを書いて、
INSERT INTO shin SELECT c1,c2 FROM moto
でいいんじゃないの。
ALTER TABLEで地道に制約付け直すでも良し。
SELECTで指定できるのに列の順序が気になる程度のもんなら、
別に大した設計してないだろ、と煽ってみるテスト(w
0301299 (!=249)02/05/14 01:45ID:VEi3hWaX
>>300
煽りに乗ってくれてありがとう。
■ このスレッドは過去ログ倉庫に格納されています