Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 почему работает быстрее?  [new]
afotr
Guest
oracle 10.2.0.3

меньше секунды

SELECT   /*+ choose */
         process.spid, sesion.action, sql_text, sesion.username, sesion.SID
    FROM 
         v$session sesion,
         v$sqlarea sqlarea,
         v$process process
   WHERE sesion.sql_hash_value = sqlarea.hash_value
     AND sesion.sql_address = sqlarea.address
     AND sesion.paddr = process.addr
     AND sesion.username IS NOT NULL
ORDER BY 

Plan
SELECT STATEMENT  HINT: CHOOSE								
	14 SORT ORDER BY  							
		13 MERGE JOIN  						
			10 SORT JOIN  					
				9 MERGE JOIN  				
					6 SORT JOIN  			
						5 MERGE JOIN  		
							2 SORT JOIN  	
								1 FIXED TABLE FULL TABLE (FIXED) SYS.X$KSUPR 
							4 SORT JOIN  	
								3 FIXED TABLE FULL TABLE (FIXED) SYS.X$KSUSE 
					8 SORT JOIN  			
						7 FIXED TABLE FULL TABLE (FIXED) SYS.X$KGLCURSOR_CHILD_SQLID 		
			12 SORT JOIN  					
				11 FIXED TABLE FULL TABLE (FIXED) SYS.X$KSLED 				

и то же саоме только без хинта - около 8-10 секунд

select 
   process.spid,
   sesion.action,
           sql_text,
   sesion.username,
   sesion.sid
  from v$sqlarea sqlarea, v$session sesion, v$process process
 where sesion.sql_hash_value = sqlarea.hash_value
   and sesion.sql_address    = sqlarea.address
   and sesion.paddr = process.addr
   and sesion.username is not null
order by 1

Plan
SELECT STATEMENT  ALL_ROWSCost: 2  Bytes: 717  Cardinality: 1  					
	8 SORT ORDER BY  Cost: 2  Bytes: 717  Cardinality: 1  				
		7 HASH JOIN  Cost: 1  Bytes: 717  Cardinality: 1  			
			5 NESTED LOOPS  Cost: 0  Bytes: 679  Cardinality: 1  		
				3 NESTED LOOPS  Cost: 0  Bytes: 134  Cardinality: 1  	
					1 FIXED TABLE FULL TABLE (FIXED) SYS.X$KSUSE Cost: 0  Bytes: 121  Cardinality: 1  
					2 FIXED TABLE FIXED INDEX TABLE (FIXED) SYS.X$KSLED (ind:2) Cost: 0  Bytes: 13  Cardinality: 1  
				4 FIXED TABLE FIXED INDEX TABLE (FIXED) SYS.X$KGLCURSOR_CHILD_SQLID (ind:1 Cost: 0  Bytes: 545  Cardinality: 1  	
			6 FIXED TABLE FULL TABLE (FIXED) SYS.X$KSUPR Cost: 0  Bytes: 38  Cardinality: 1  		
29 июн 07, 19:39    [4333769]     Ответить | Цитировать Сообщить модератору
 Re: почему работает быстрее?  [new]
Elic
Member

Откуда:
Сообщений: 29979
Потому что choose спровоцировал RBO. А NL к большим фиксированым таблицам (X$KGLCURSOR_CHILD_SQLID) невыгоден.
Соотношение времён пропорционально количеству сессий.
29 июн 07, 20:01    [4333798]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить