1

ネットワークログのリストがあります。各行にはタイムスタンプがあり、後のクエリで使用できるように個別のタイムスタンプを取得する必要があります。現時点では、次のクエリを使用しています。

select distinct time from metastatus

まず、select distinctクエリがソートされた値を返すことを確認したいですか?

次に、データベースが上記のクエリに使用しているインデックスを時間通りに作成しました。

最後に、常に取得してコードから一意の値を見つけることを考えましたが、常に取得するには値が多すぎます (160,000,000)。

ありがとう、ジェームズ

4

1 に答える 1

1

PostgreSQL で使用される値を取得する通常の方法DISTINCTは、行をソートしてから、各セットの最初のものを選択することです。そのため、通常はソートされた結果が得られますが、Postgres は順序について何も主張しません。条項ORDER BYに同意する an を追加するだけです。DISTINCTいずれにせよ、ドキュメントの観点からは優れています。通常、追加料金はかかりません。で確認しEXPLAIN ANALYZEてください。

すべての行を取得し、Postgres の外部でソートするという考えはナンセンスです。このようなタスクに最適化された RBDMS のパフォーマンスに近づく可能性はありません。また、ワイヤを介してかなりのノイズを転送します。この関連する質問の回答を検討してください。

于 2012-12-04T11:48:11.857 に答える