例えば
where like "%str%" vs stream().filter(i -> i.contains(str))
group by column a vs stream().groupingby(column_a)
group by column_a, column_b vs stream().groupingby(column_a, groupingby(column_b))
count vs stream().count
sum vs stream().sum
order by vs stream().sort
...
同じスペックのサーバーで実行した場合と異なるスペックのサーバーで実行した場合のどちらが高速でパフォーマンスが優れているかを知りたいと思います。
回答:
回答№1は1これらは異なるユースケースです。 データベースは永続化されたデータで動作するように設計されており、ストリームは指定されたデータ構造を横断します。そのため、ストリームを使用するには、最初に何らかの方法でデータを読み取る必要があります。これは、特に次のことを支援するインデックス付きのデータベースを使用する場所です。 %like%
.
だから、質問はそれがより速いかどうかでなければなりませんクエリの一部としてデータベースで合計、グループ化、カウント、並べ替えを行うか、データベースからデータをフェッチしてJavaでこれらの操作を行うと、ストリームで行うことが望ましいケースを見つけることはほとんどありません。
データベースは高速に、ストリームは処理しやすいように作られています。 ストリームパフォーマンス関連の質問(ここに, ここに、そしてあなたは他を見つけることができます)ストリームが本当に遅いことを示しています。ストリームは並列に動作して高速化できますが、データベースも同様に動作します。