3

私の orientdb データベースには、約 230 万のレコードがあります。statement- を使用して、すべての重複レコード (約 750,000 件あります) をクエリしようとしています SELECT FROM (select PROP1, PROP2, count(*) as c from vin_data group by PROP1 ) where c > 1。制限を約 200 に設定すると、クエリに約 180 秒かかります (遅いと思います)。しかし、制限を 750000 に設定すると、メモリ不足エラーが発生します。私のRAMは4GBで、Xms64mとXmx3600mを設定しています。PROP1 と PROP1+PROP2(コンポジット) にインデックスを設定しました。私の質問は、230 万レコードのデータベースに 4GB の RAM で十分ですか?

4

1 に答える 1

2

上記のクエリでは、両方のインデックスは で使用されていないため、価値がありませんGROUP BY。"where" 条件がなければ、クラス全体がスキャンされます。PARALLELステートメントの最後にキーワードを追加して、最適化を試みることができます。複数のコアがある場合は、はるかに高速になるはずです。

とにかく、次のリリース v3.0 (まだプレアルファ版) では、新しい SQL エンジンに多くの労力が費やされており、あなたのようなクエリははるかに高速になるはずです。

于 2016-11-07T07:53:35.820 に答える