
お世話になっております。
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を探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DELETE文でFROM句を省略した場合
-
RDBのテーブル種類の違い
-
object browser で処理を中断す...
-
他の処理でselectさせないよう...
-
年度毎にシーケンスの初期化?
-
カーソルについて
-
1件あたりの処理時間を検討する...
-
トランザクションの考え方の疑問点
-
Access2013で操作ログを残した...
-
Oracleから見たOracleの優位性(...
-
ActiveX DLLでのオラクルのトラ...
-
処理速度の見積もり時間について。
-
データを削除しても表領域の使...
-
ORA-00959: 表領域'****'は...
-
ACCESS 複数テーブル・複数フィ...
-
CLOB型へのINSERT
-
Viewにインデックスは張れ...
-
シノニムってエイリアスのエイ...
-
postgreSQLのint型は桁数指定が...
-
Data Pump で大量データインポ...
マンスリーランキングこのカテゴリの人気マンスリー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件あたりの処理時間を検討する...
おすすめ情報