データベースでデータを難読化する必要があるシナリオがあります(=テスト目的でスクランブルするため、実際のデータを表示することはできません。スクランブルを解除/難読化を解除する必要はありません)。address_table を参照しているテーブルがいくつかあります。address_table を難読化することはできないため、これらのテーブルの参照をランダムな他の address_table ID に変更するだけであると考えました。address_table には 6M 以上のレコードが含まれています。そのため、すべてのアドレス ID を含む一時テーブルを作成し、必要に応じて関数を呼び出してそこからランダムなものを取得します。したがって、ランダムな値を生成して、その行を次のように取得できます。
Select * From (
Select Id, Rownum Rn From myTempTable )
WHERE RN = x;
ここで、x は dbms_random によって生成されるランダム値です。今、これは私が必要としているものですが、私が期待するものに近いものは何も実行しません. 私が試した他のことは、sample() 関数を呼び出すことです。これは (少なくとも小さなテーブルでは) パフォーマンスが少し向上しますが、十分ではありません。
thisまたはthis on mySqlのようなこの問題に関するいくつかのスレッドがあることは知っていますが、パフォーマンスに関して直接答えることはありません。
また、pl/sql の使用に制限はありません。私は pl/sql についてほとんど知りませんが、パフォーマンスに関してはどうですか? つまり、これは DB サーバー処理キューの別のプロセスです。おそらく、ネットワーク遅延などを考慮しても、Python などを使用してクライアント側で処理 (更新スクリプトの生成、ランダムの入力など) を実行すると、パフォーマンスが向上する可能性があります。誰もこれについて経験がありますか?