Tenho uma dúvida como você pode ver abaixo:
select /*+gather_plan_statistics*/
*
from mi_dimcustomer t
where t.CUSTOMER_NUM = 321937
Há uma coluna Unique Index
(IDX1_DIMCUSTOMER)
na Customer_Num
tabela. Eu usei /*+gather_plan_statistics*/
hint e Dbms_xplan.display_cursor
para obter o plano de execução real e é isso que eu tenho:
SQL_ID adj0b6drg6bjd, child number 0
-------------------------------------
select /*+gather_plan_statistics*/* from vmi_dimcustomer t where
t.CUSTOMER_NUM = 321937
Plan hash value: 3784660444
-----------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Starts | E-Rows | Cost (%CPU)| A-Rows | A-Time | Buffers |
-----------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | | 2 (100)| 1 |00:00:00.01 | 3 |
| 1 | TABLE ACCESS BY INDEX ROWID| MI_DIMCUSTOMER | 1 | 1 | 2 (0)| 1 |00:00:00.01 | 3 |
|* 2 | INDEX UNIQUE SCAN | IDX1_DIMCUSTOMER | 1 | 1 | 1 (0)| 1 |00:00:00.01 | 2 |
-----------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("CUSTOMER_NUM"=321937)
Minha pergunta é sobre Operation-2 , Index unique scan.
Até onde eu sei o que acontece Index scan
é apenas escanear/pesquisar o Index Page
, recuperar os Rowids desejados e depois usar esses Rowids para acessar o local correto na tabela (que é op-1). -2 (que é apenas varrer a página de índice) para gerar quaisquer linhas! Então, por que vemos [A-rows]=1 no plano de execução para op-2? o que esse número representa?
Meu palpite é que seria igual ao número de ROWIDs retornando da página de índice.
desde já, obrigado
Seu palpite está correto, é o número de rowids que são retornados do índice. Este é o número de linhas examinadas pelo acesso à tabela, mas não necessariamente o número de linhas retornadas por ela (por exemplo, você tem outro filtro que só pode ser aplicado após a leitura do restante da linha).