В базе данных Oracle, когда я получу план выполнения или объясню план, какой источник строки будет считаться движущей таблицей?Это один над другим?Или это изменится во вложенных объединениях, объединениях слиянием и т. Д.?Кроме того, изменится ли он, если я получу план выполнения от разработчика SQL, или объясню команду плана и т. Д.?Я знаю, что оптимизатор выбирает меньшую таблицу в качестве таблицы управления.Но я знаю, что это не всегда так.Так что я запутался в этом.Кстати, я спрашиваю об оптимизации на основе затрат.Так что, если вы можете объяснить на CBO, это будет оценено.Например, в приведенном ниже плане, который является руководящим столом?Как мы понимаем, что это водительский стол?Это потому что оно сверху?С наилучшими пожеланиями
select * from hr.employees e join hr.departments d on d.department_id =
e.department_id where d.department_name like 'A%'
Plan hash value: 1021246405
--------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | | 4 (100)| |
| 1 | NESTED LOOPS | | 10 | 900 | 4 (0)| 00:00:01 |
| 2 | NESTED LOOPS | | 10 | 900 | 4 (0)| 00:00:01 |
|* 3 | TABLE ACCESS FULL | DEPARTMENTS | 1 | 21 | 3 (0)| 00:00:01 |
|* 4 | INDEX RANGE SCAN | EMP_DEPARTMENT_IX | 10 | | 0 (0)| |
| 5 | TABLE ACCESS BY INDEX ROWID| EMPLOYEES | 10 | 690 | 1 (0)| 00:00:01 |
--------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
3 - filter("D"."DEPARTMENT_NAME" LIKE 'A%')
4 - access("D"."DEPARTMENT_ID"="E"."DEPARTMENT_ID")
Note
-----
- this is an adaptive plan