sql >> Databáze >  >> RDS >> Oracle

Oracle 10g:MIN/MAX odhad hodnoty sloupce

Ano, LOW_VALUE a HIGH_VALUE vám řeknou minimální a maximální hodnoty ve sloupci ale :

  • jsou uloženy jako RAW(32) sloupce, takže význam nebude hned patrný
  • budou k datu posledního shromažďování statistik pro tabulku, takže nemusí být přesné (pokud před použitím statistiky výslovně neshromáždíte)

Pokud sloupec indexujete, pak MIN(a) a MAX(a) by měly být velmi rychlé jako v tomto příkladu, kde T1 má 50 000 řádků a je indexován na 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

Výsledek je stejný, pokud zvolíte MAX místo MIN. Pokud však vyberete MIN a MAX v jediném příkazu select, bude výsledek jiný:

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

To naznačuje, že může být lepší získat je samostatně, i když jsem to přesvědčivě neprokázal.



  1. opencart seo přepisování adresy URL

  2. mysql na csv bez použití INTO OUTFILE mysql

  3. Jak exportovat data do plochého souboru pomocí nástroje BCP a importovat data pomocí hromadného vkládání

  4. V MySQL 5 je SELECT COUNT(1) FROM název_tabulky velmi pomalý