Что обозначают строки в плане объяснения? - PullRequest
3 голосов
/ 19 апреля 2011

Это был мой запрос:

SELECT payload_data FROM staging_record WHERE record_source = 11;

Это был план выполнения:

------------------------------------------------------------------------------------------------
| Id  | Operation                   | Name             | Rows  | Bytes | Cost (%CPU)| Time     |
------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT            |                  |  9016 |  1875K|   292   (1)| 00:00:05 |
|   1 |  TABLE ACCESS BY INDEX ROWID| STAGING_RECORD   |  9016 |  1875K|   292   (1)| 00:00:05 |
|*  2 |   INDEX RANGE SCAN          | IX_RECORD_SOURCE |  9016 |       |    15   (0)| 00:00:01 |
------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   2 - access("RECORD_SOURCE"=11)

Я сделал подсчет, и он вернул 22619 с этим запросом

SELECT COUNT(*) FROM staging_record WHERE record_source = 11;

Почему в столбце «Строки» указано «9016», когда мой счет вернул 22619. Что здесь означает «1011 *»?

Ответы [ 2 ]

3 голосов
/ 19 апреля 2011

Цифра 9016 - это оценка оптимизатора на основе имеющейся статистики. Если в таблице 901 600 строк и имеется 100 различных значений для record_source, тогда оптимизатор может оценить, что типичный запрос по record_source вернет 901 600/100 = 9016 строк. Отклонение фактических данных может сделать это неточным (оно никогда не будет идеальным). Если данные сильно искажены, то гистограммы могут быть использованы для дальнейшего уточнения статистики.

1 голос
/ 19 апреля 2011

Ваши признаки устарели.Обновите статистику (используя DBMS_STATS), и вы получите более точное значение.

Rows относится к количеству строк, затронутых во время выполнения запроса (приблизительно, согласно информации индикатора).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...