問題タブ [anti-join]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
oracle - NOT IN クエリから非常に迅速に結果を返す
アイテムのコレクション (> 100 万) と、それを処理するいくつかの処理を行うシステムがあります。各プロセッサは各項目を 1 回だけ処理する必要があり、プロセッサには階層があります。
私たちの現在の実装は、各プロセッサがすでに行ったことを追跡する「処理済み」テーブルを持つことです。
私たちのクエリはこれです (itemsProcessed
関連するインデックスがあります) - NOT IN を使用して、現在のプロセッサまたはその祖先によって既に処理されたアイテムを除外しています。
処理されたテーブルが非常に大きくなると、最初のアイテムを返し始める前に多くのフィルタリングを行う必要があるため、このクエリは長い時間 (数秒) かかり始めます (クエリ プランはハッシュ アンチジョインを使用しています)。
最初のいくつかの項目を非常に迅速に返すために、このクエリが必要です。理想的には、500ms 未満で最初の項目を返します。これは、反復処理をitems
行って 内のものを除外できないことを意味しitemsProcessed
ます。items
したがって、 andの結合で否定インデックスを実行する何らかの方法が必要ですitemsProcessed
(これは mongo で達成しましたが、oracle では同様のことができないようです)。
これはオラクルで可能ですか?
r - R tidytext stop_words は、gutenbergr のダウンロードから一貫してフィルタリングされません
これは奇妙なパズルです。Gutenbergr から 2 つのテキストをダウンロードしました - Alice in Wonderland と Ulysses。stop_words は Alice から消えますが、Ulysses には残っています。この問題は、anti_join をフィルター (!word %in% stop_words$word) に置き換えても持続しました。
Ulysses から stop_words を取得するにはどうすればよいですか?
ご協力いただきありがとうございます!
sql - Oracleのアンチ結合の代替手段
別のテーブル ('PARENT') への外部キーを持つ必要があるテーブル ('CHILD') から行を選択する必要があるという問題に直面しています。問題は、外部キーが壊れていることです (簡単に言えば、テーブルがパーティション分割されており、何らかの理由で孤立している) ため、外部キーを復元する前に子テーブルをクリーンアップする必要があります。私がやろうとしていることは(大まかに)です:
これは (結果から判断すると) 正しいように見えますが、非常に非効率的です。100 万件の結果があり、子テーブルには 1 億行以上が保持されています。そのクエリの結果から各行を削除する必要があるため、ページネーションを使用していますが、これは NOT IN クエリが毎回繰り返されることを意味します。このため、クエリのパフォーマンスを向上させる方法があるかどうか疑問に思っています。テーブルに参加しようとしましたが、参加する必要があるため機能しないことに気付きましたchild.PARENT_ID = parent.ID
。結果はありません。問題は、NOT IN クエリを書き直してパフォーマンスを向上させる方法はないかということです。
r - R: 2 つの列の値に基づいて欠落しているレコードを取得する方法
経度/緯度座標の 2 つの大きなデータフレームがCoastalStates_Tax
あり、これらは数百万の座標があるCoastalStates
ことを除いてほとんど同じです。のどの行が にないCoastalStates_Tax
かを把握したいのですが、データセット内のどこにいても欠落している行のインデックスを追跡できる必要があります。CoastalStates_Tax
CoastalStates
Tax
これはCoastalStates_Tax
次のようになります。
そしてCoastalStates
:
で dplyranti_join
関数を使用してみanti_join(CoastalStates_Tax,CoastalStates,by=c("PROPERTY LEVEL LONGITUDE","PROPERTY LEVEL LATITUDE"))
ましたが、4,635,393 行しか表示されません。
2 つのデータセットの行数の差は 4,637,029 であるため、約 1600 行が不足していますが、その理由はわかりません。私は を誤用anti_join
していますか?もしそうなら、これについて他の方法で何か提案はありますか?