2017-11-29 14 views
0

私はPostgreSQL WHERE節を書いても問題ありませんか?PostgreSQLでWHERE句を書くには

ID列がインデックスされ、nameがインデックスされていない表を想像してください。

2つのクエリが同じ時間に実行される実行するには?

そして、これらの単純なクエリにもかかわらず、

  • SELECT * FROM users WHERE id = 3 AND state = 0;

    SELECT * FROM users WHERE state = 0 AND id = 3;

    1. 。 Postgresは複雑なクエリに対しても同じ最適化を行いますか?

      回答するときは、profリンクをご提供ください。

      ありがとうございます。条件タイプ ブール値の結果を評価する任意の式である

    +0

    順序は関係ありません - 括弧付きのグループ化だけは行いません。 where節は常に真または偽でなければなりません - 結果を整理する方法は?(真と真)=真、(真と虚偽)=偽、真と真はありません - 両者は互換性があります –

    +0

    @VaoTsun:変更されません。この結果を得る時間は重要です。最初の場合、インデックスは使用されていない可能性があります。 –

    +0

    オプティマイザは評価の順序を(統計に基づいて)決定します - あなたは彼にあなたの注文をヒントできません(少なくともこれは簡単ではありません) –

    答えて

    0

    https://www.postgresql.org/docs/current/static/sql-select.html#SQL-WHERE

    。この条件を満たさない行は、 が出力から除外されます。

    https://www.postgresql.org/docs/current/static/functions-logical.html

    演算子ANDとORは可換ある、つまり、あなたは "コントロールを評価する条件" についての結果

    に影響を与えることなく、 左と右オペランドを切り替えることができます、そこにare some answers