選択クエリから一時テーブルにレコードを挿入しようとしていますが、一部のレコードが一時テーブルにありません。select ステートメントには複数の結合と結合があり、それらはすべて少し複雑なクエリです。簡単に言えば、スクリプトには 2 つの部分が含まれます。第 1 部は一時テーブルに挿入します。第 2 部は、複数の結合、インライン サブクエリ、ユニオン、およびクラスと条件によるグループを使用したクエリの選択です。
例えば。selectステートメントを単独で実行すると、たとえば=> 60000などのカウントが返されます一時テーブルに挿入した後、一時テーブルのカウントは約42000ですなぜ違いがあるのですか?
また、他にもいくつかの観察があります。最初の実行ではなく、2 回目の実行でのみ発生します。キャッシュに問題があることを願っています
セッション キャッシュをクリアすると (チェックポイント、shared_pool および buffer_cache をフラッシュ)、Re_Run で問題なく動作します。
しかし、この解決策が正しいかどうかはわかりません。また、キャッシュのクリアがバックグラウンドでどのように機能し、挿入に失敗したか。それが本当なら、何か間違った設定のセットアップだと思います。
コードは sql = "insert in to temptable select x,y,z,.... from xxx,abc,pqr..where...."; のようになります。(論理的だが現実的ではないのは、複数の結合、インラインサブクエリ、グループ化などを含む約 700 行で非常に複雑です。) stmt = conn.createStatement(); rCount= stmt.executeUpdate(sql); 実際の問題は rCount = xxxx = Count(temptable) < count(select x,y,z,.... from xxx,abc,pqr..where....) です なぜこの違いですか?一部のレコードが選択に取り込まれましたが、一時テーブルに挿入されませんでした
誰でも説明できますか?
あなたの努力と助けに前もって感謝します。
シヴァ。