sql >> Databasteknik >  >> RDS >> Oracle

Kan jag ha ett sammansatt index på när jag använder en vänsterkoppling

Det fungerar som förväntat. Oracle gjorde precis som du bad den att göra.

CREATE INDEX email_phonenumber_student_idx
  ON student(phonenumber, email);

Du har ett sammansatt index på phonenumber, email , medan du inte använder någon av kolumnerna i filterpredikatet av din fråga:

where months_between(SYSDATE, dateofbirth)/12 >= 18 
and  xyz.studentnumber is null;

Så det finns ingen anledning till varför Oracle skulle göra en indexskanningphonenumber, email . Du väljer helt enkelt dessa kolumner med sammansatt nyckel, inte filtrerar dem:

SELECT Phonenumber, email 
from student left join Xyz

Index kommer att användas när du PROJEKERAR dessa kolumner, inte bara SELECT . STUDENT Tabell som förväntat går för en FULL TABLE SCAN eftersom det är ett vanligt urval och inte använder något filter på de indexerade kolumnerna. Om du vill se en indexgenomsökning, lägg till nedanstående filter:

AND phonenumber = <value>
AND email = <value>


  1. MySQL hur man skriver SQL för att hitta överdrivna transaktioner i 15 minuters fönster?

  2. Hur ändrar man sammanställning av databas, tabell, kolumn?

  3. SQLite JSON_PATCH()

  4. Uppgiftslista