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)
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ńo nieeeeee, to się opublikowało niechcący 😅
OdpowiedzUsuń