
お世話になっております。
Oracle10gで テーブル単位でTemporary Tableが出来ないか
試行錯誤しております。
要件として、Webアプリケーションで100万件のデータをSelectします。
その際、全データを取得するには、遅すぎるので、分割して取得しています。
現在では、C#で、サーバ側で取得Temporary Table Insertして、そのデータを参照するようにしているのですが、
Insertが遅いのと、C#に一度持ってきていますので、メモリが不安な状態です。
これを、create global temporary table CRE_TABLE_NAME as select * from TABLE_NAME
にして、CRE_TABLE_NAMEを参照したいのですが、dropタイミングがつかめませんでした。
そこで、このテーブルが自動的にdropしたいのですが、何か良い案はありませんでしょうか?
思いついたのが、temporary tableにテーブル情報を保持して、sessionが切れた、時点で消えるのを利用して、テーブルdropのトリガーを記載しようと思ったのですが、そのトリガーを思いつきませんでした。
どなたか、代替案または、実装したことがある方、よろしくお願いします。
No.2ベストアンサー
- 回答日時:
ごめんなさい、わかりません。
なんらかのイベントというかトリガーというかアクションによって、テンポラリ表領域に使用したテーブルを削除するように作成するしかないようですね。定期的に削除するジョブを走らせておくとか。
PRESERVE ROWSを指定して作成した場合、切捨てはするけれどDROP はしないですね。「CREATE GLOBAL TEMPORARY TABLE ~ as select * from」 だと、DROPしないといけないので使えませんね。
お手数おかけしてます。
そうなんです、Dropしないと残って行っちゃうのですよね
SQLServerみたいな #Table_Name とかあればよかったのですが、
1週間たっても他の人からレスないので、無理なのかも知れません。
もう少し悩んでみます。
ありがとうございました。今回は一度締め切ります。
No.1
- 回答日時:
夜間バッチでは100万件単位のデータを扱ったことがあるのですが、オンラインではないので参考になるかどうかわかりませんが。
ものによっては、セッションはつながりっぱなしで、切れる時はWeb Serverまかせなのでタイミングはとりにくいかと。
集計処理なのでしょうか?
それとも表示処理なのでしょうか?
一括ダウンロード処理?
集計であれば差分更新、表示であれば表示範囲だけを処理するというロジックではだめなのでしょうか?設計とコーディングが面倒くさいですけど。
処理そのものの概要がわかるような情報をお願いします。
データベースそのものだけでの解決案は難しいかも?
この回答への補足
レスありがとうございます。
かなり、まだ悩んでいます。
参照を行うのに使用していまして、一度にクライアントに送信すると固まる?のでページングという意味で、やっております。
最初はfillで500件ずつ返していたのですが、その間にDMLが発生すると結果がつじつまがあわないことになり、NGになりました。
そこで、現在では、テンポラリにRowデータをシリアライズしてCLOBで保存しているのですが、なんせ件数だけに重く+メモリが不安です。
そこで、create table ~ as select * from ~でテーブルを作成して
そこを参照したかったのですが、今度はdropするタイミングがつかめませんでした。
テンポラリにこのテーブル情報を格納してテンポラリから自動で削除されるタイミングでこのテーブルもdrop出来ないかと考え中です。
このような感じですが、わかりますでしょうか?
引き続きよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- MySQL MySQLのテーブル作成で 自信がありません。 2 2022/08/28 05:35
- MySQL テーブル作成時のカラムについて 2 2022/08/27 21:48
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DELETE文でFROM句を省略した場合
-
AccessからExcel立ち上げ
-
年度毎にシーケンスの初期化?
-
object browser で処理を中断す...
-
RDBのテーブル種類の違い
-
1件あたりの処理時間を検討する...
-
stored procedureの引数について
-
Access2013で操作ログを残した...
-
処理速度の見積もり時間について。
-
ActiveX DLLでのオラクルのトラ...
-
データを削除しても表領域の使...
-
ORA-00959: 表領域'****'は...
-
Access レコードを追加できませ...
-
Viewにインデックスは張れ...
-
シノニムってエイリアスのエイ...
-
postgreSQLのint型は桁数指定が...
-
INSERT文で発行したオートナン...
-
Data Pump で大量データインポ...
-
異なるスキーマからデータを抽...
-
ACCESS 複数テーブル・複数フィ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DELETE文でFROM句を省略した場合
-
RDBのテーブル種類の違い
-
object browser で処理を中断す...
-
同じSELECT文同士でのデ...
-
accessでイベントを中止するよ...
-
他の処理でselectさせないよう...
-
[性能改善]AccessのDBに大量の...
-
トランザクションの考え方の疑問点
-
年度毎にシーケンスの初期化?
-
PL/SQLでmdb(Access)ファイルへ...
-
PL/SQLの平行処理について
-
チューニング対象のSQLの見つけ...
-
ActiveX DLLでのオラクルのトラ...
-
統計情報の取得=コミットですか?
-
UPDATE がうまくいかない
-
PL/SQLでの処理について
-
処理速度の見積もり時間について。
-
C#でトランザクション開始後参...
-
DBリンクエラーについて
-
1件あたりの処理時間を検討する...
おすすめ情報