Почему команда desc не производит статистику и не объясняет план? - PullRequest
1 голос
/ 24 октября 2019

Почему команда desc не производит статистику и не объясняет план при запросе, например: desc my_table?

Ответы [ 2 ]

4 голосов
/ 24 октября 2019

В качестве альтернативы используйте SQLcl .

И вместо DESC попробуйте INFO +

. Вы получите все, что показывает DESC, но гораздо больше. А с помощью (+) SQLcl добавляет статистику по столбцам.

SQL> info+ regions
TABLE: REGIONS 
     LAST ANALYZED:2019-10-14 11:11:42.0 
     ROWS         :4 
     SAMPLE SIZE  :4 
     INMEMORY     :DISABLED 
     COMMENTS     :Regions table that contains region numbers and names. Contains 4 rows; references with the Countries table. 

Columns 
NAME          DATA TYPE           NULL  DEFAULT    LOW_VALUE   HIGH_VALUE               NUM_DISTINCT   HISTOGRAM  
*REGION_ID    NUMBER              No                   1           4                        4              NONE       
 REGION_NAME  VARCHAR2(25 BYTE)   Yes                  Americas    Middle East and Africa   4              NONE       

Indexes
     INDEX_NAME    UNIQUENESS    STATUS    FUNCIDX_STATUS      COLUMNS 
_______________ _____________ _________ _________________ ____________ 
HR.REG_ID_PK    UNIQUE        VALID                       REGION_ID    


References
   TABLE_NAME    CONSTRAINT_NAME    DELETE_RULE     STATUS        DEFERRABLE    VALIDATED    GENERATED 
_____________ __________________ ______________ __________ _________________ ____________ ____________ 
COUNTRIES     COUNTR_REG_FK      NO ACTION      ENABLED    NOT DEFERRABLE    VALIDATED    USER NAME    

SQL> 

Из документов ...

INFO [RMATION] {[схема.] Объект [@connect_identifier]} Список более подробной информации об определениях столбцов. для таблицы, представления или синонима, или спецификации для функции или процедуры.

Примечание:

INFORMATION + покажет статистику столбца.

2 голосов
/ 24 октября 2019

Из документации Oracle :

DESCRIBE

Синтаксис

DESC[RIBE] {[schema.]object[@db_link]}

Перечисляет определения столбцовдля указанной таблицы, представления или синонима или спецификации для указанной функции или процедуры.

Использование

Описание таблиц, представлений, типов и синонимов содержитследующая информация:

  • имя каждого столбца

  • независимо от того, допускаются ли нулевые значения (NULL или NOT NULL) для каждого столбца

  • тип столбцов, например, CHAR, DATE, LONG, LONGRAW, NUMBER, RAW, ROWID, VARCHAR2 (VARCHAR) или XMLType

  • точность столбцов (и масштаб, если таковые имеются, для числового столбца)

Таким образом, все, что он делает, это перечисляет определения или спецификации столбцов.

Почему команда desc не производит статистику и не объясняет план, когда я запрашиваю, например: desc my_table?

Поскольку они не являются определениями столбцов для таблицы, а команда DESCRIBE делает именно то, для чего она предназначена;не больше, не меньше.

...