sql >> Database >  >> RDS >> Oracle

Kan ik een samengestelde index aanzetten bij gebruik van een left join?

Het werkt zoals verwacht. Oracle deed precies wat je ervan vroeg.

CREATE INDEX email_phonenumber_student_idx
  ON student(phonenumber, email);

Je hebt een samengestelde index op phonenumber, email , terwijl u geen van de kolommen in het filterpredikaat . gebruikt van uw vraag:

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

Er is dus geen reden waarom Oracle een indexscan zou doen op phonenumber, email . Je SELECTEERt gewoon die kolommen van de samengestelde sleutel, niet om ze te filteren:

SELECT Phonenumber, email 
from student left join Xyz

Index wordt gebruikt wanneer u PROJECT die kolommen, niet alleen SELECT . De STUDENT tabel zoals verwacht geldt voor een FULL TABLE SCAN omdat het een gewone selectie is en geen filter gebruikt op de geïndexeerde kolommen. Als u een indexscan wilt zien, voeg dan onderstaande filter toe:

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


  1. MySQL- Is het mogelijk om binnen een bepaalde periode een back-up te maken van de mySQL-database?

  2. 30 tabellen met weinig rijen - TRUNCATE de snelste manier om ze leeg te maken en bijgevoegde reeksen opnieuw in te stellen?

  3. MySQL-server verbinden met NetBeans

  4. Hoe gegevens importeren uit .csv in SQL Server met PowerShell?