Czy jeśli na kolumnie jest funkcja, Oracle NIE SKORZYSTA z indexu. Prawda czy fałsz?










Czy jeśloi na kolumnie jest funkcja, Oracle NIE SKORZYSTA  z indexu. Prawda czy fałsz?
 begin  
 --   
   select count(*) into cnt from employees where employee_id = employee_id;  
   select count(*) into cnt from employees where employee_id = l_employee_id; 
   select count(*) into cnt from employees where employee_id = vemp_id;  
   select count(*) into cnt from employees where employee_id = nemp_id;  
   select count(*) into cnt from emp where emp_id = emp_id; 
   select count(*) into cnt from emp where emp_id = l_emp_id; 
   select count(*) into cnt from emp where emp_id = vemp_id;  
   select count(*) into cnt from emp where emp_id = nemp_id;  
 end;  
 /  
Osiem zapytań SQL - znajdź różnice!

Czym wynik zapytań będzie taki sam? 
Czy wszystkie zapytania skorzystają z indeksu?

Testy przeprowadzę na bazie Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production na schemacie HR.

Tabela EMPLOYEES - tabela EMPLOYEES ze schematu HR
Dodałam nową tabelę - tabelę EMP jako kopię tabeli EMPLOYEES z jedną zmianą w stosunku do orginału - typ kolumny z Id pracownika został zmienony z number na varchar2(10).

EMPLOYEES.EMPLOYEE_ID NUMBER
EMP.EMP_ID VARCHAR2(10)












Komentarze

  1. dodatkowo wykonaj te zapytania przez dblink - ustawiając hinta "driving site' raz na lokalną, raz na zdalna bazę ;-) (pytanie, które zapytania nie wykona sie z powodu błedu "invalid number" ;-) )

    OdpowiedzUsuń
  2. o nieeeeee, to się opublikowało niechcący 😅

    OdpowiedzUsuń

Prześlij komentarz