sql >> データベース >  >> RDS >> Oracle

Oracle 10g:MIN/MAX列値の見積もり

    はい、LOW_VALUEとHIGH_VALUEは、列の最小値と最大値を示しますしかし

    • これらはRAW(32)列として保存されるため、意味がすぐにはわかりません
    • テーブルの統計が最後に収集された時点のものであるため、正確ではない可能性があります(使用する前に統計を明示的に収集しない限り)

    列にインデックスを付ける場合、MIN(a)とMAX(a)は、T1に50000行があり、OBJECT_IDでインデックスが付けられているこの例のように非常に高速である必要があります。

    SQL> select min(object_id) from t1;
    
    MIN(OBJECT_ID)
    --------------
               100
    
    ------------------------------------------------------------------------------------
    | Id  | Operation                  | Name  | Rows  | Bytes | Cost (%CPU)| Time     |
    ------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT           |       |     1 |     5 |     2   (0)| 00:00:01 |
    |   1 |  SORT AGGREGATE            |       |     1 |     5 |            |          |
    |   2 |   INDEX FULL SCAN (MIN/MAX)| T1_ID | 53191 |   259K|     2   (0)| 00:00:01 |
    ------------------------------------------------------------------------------------
    
    Statistics
    ----------------------------------------------------------
              1  recursive calls
              0  db block gets
              2  consistent gets
              0  physical reads
              0  redo size
            419  bytes sent via SQL*Net to client
            380  bytes received via SQL*Net from client
              2  SQL*Net roundtrips to/from client
              0  sorts (memory)
              0  sorts (disk)
              1  rows processed
    

    MINの代わりにMAXを選択しても、結果は同じです。ただし、単一のselectステートメントでMINとMAXを選択した場合、結果は異なります。

    SQL> select min(object_id), max(object_id) from t1;
    
    MIN(OBJECT_ID) MAX(OBJECT_ID)
    -------------- --------------
               100          72809
    
    
    -------------------------------------------------------------------------------
    | Id  | Operation             | Name  | Rows  | Bytes | Cost (%CPU)| Time     |
    -------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT      |       |     1 |     5 |    34   (0)| 00:00:01 |
    |   1 |  SORT AGGREGATE       |       |     1 |     5 |            |          |
    |   2 |   INDEX FAST FULL SCAN| T1_ID | 53191 |   259K|    34   (0)| 00:00:01 |
    -------------------------------------------------------------------------------
    
    
    Statistics
    ----------------------------------------------------------
              0  recursive calls
              0  db block gets
            125  consistent gets
              0  physical reads
              0  redo size
            486  bytes sent via SQL*Net to client
            380  bytes received via SQL*Net from client
              2  SQL*Net roundtrips to/from client
              0  sorts (memory)
              0  sorts (disk)
              1  rows processed
    

    これは、私がそれを決定的に証明していませんが、それらを別々に入手する方が良いかもしれないことを示唆しています。



    1. MySQL:基本的な検索を実行します

    2. MySQLで2つの類似したテーブルを結合する

    3. 1時間に数十万回実行する必要がある遅いmysqlクエリ

    4. ユーザーIDをデータベースにアップロードしようとすると、セッションはユーザーIDをnullとして返しますか?