2016-06-29 5 views
0

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 ... SQL(例:mysql、postgresql)ここで、java8のストリームのパフォーマンスと高速?

同じ仕様のサーバーで実行されているか、別のサーバーで実行されている場合のパフォーマンスが優れていると思います。

+0

自分の環境内で自分でテストすれば、どの方法が効果的かを知ることができます。 – Shadow

+0

thx、私は多様な環境を持っていないので、私は準備ができて答えを知ってほしい。 – fanfever

答えて

1

これらはそれぞれ異なる用途です。データベースは永続化されたデータで動作するように設計されており、ストリームは特定のデータ構造を横断します。したがって、ストリームを使用するには、最初に何らかの方法でデータを読み取る必要があります。つまり、特に%like%に役立つインデックスを持つデータベースを使用します。

クエリの一部として集計、グループ化、カウント、並べ替えを行う方が速いのか、データベースからデータをフェッチしてjavaでこれらの操作を行うのが速いのかあなたがストリームでそれをやっているところが望ましいでしょう。

データベースが高速になるように、ストリームは機能するようにセクシーに作られています。 ストリームのパフォーマンスに関連する質問(herehere、その他を見つけることができます)は、ストリームが実際に遅いことを示しています。ストリームは並行して高速化することができますが、データベースも同様です。

+0

thx、私はどのように複雑な集計操作であるかもしれないと思うことができる、データベースの操作がストリームに良いですか? – fanfever

+0

私は90年代の状況を覚えています。銀行は、非常に多くのクライアントが接続された1台のプロセッサでメインフレームを使用していました。そこにはかなり長い時間がかかりましたが、他のクライアントはその時間にブロックされませんでした。しかし、一般的に、データベースはストリームよりもはるかに高速です。 –

関連する問題