sql >> Database >  >> RDS >> Oracle

Hoe en wanneer worden indexen gebruikt bij INSERT- en UPDATE-bewerkingen?

Voor UPDATE-statements kan de index worden gebruikt door de optimizer als hij van mening is dat de index hem kan versnellen. De index zou worden gebruikt om de rijen te lokaliseren die moeten worden bijgewerkt. De index is bij wijze van spreken ook een tabel, dus als de geïndexeerde kolom wordt bijgewerkt, moet deze uiteraard ook de index BIJWERKEN. Aan de andere kant, als u een update uitvoert zonder een WHERE-clausule, kan de optimizer ervoor kiezen om geen index te gebruiken omdat deze toegang moet hebben tot de hele tabel, een volledige tabelscan kan efficiënter zijn (maar moet mogelijk nog steeds de index bijwerken ). De optimizer neemt die beslissingen tijdens runtime op basis van verschillende parameters, zoals of er geldige statistieken zijn voor de tabellen en indexen in kwestie, hoeveel gegevens worden beïnvloed, welk type hardware, enz.

Voor INSERT-instructies, hoewel de INSERT zelf de index niet nodig heeft, moet de index ook worden 'ingevoegd in', en moet dus worden geopend door orakel. Een ander geval waarin INSERT ervoor kan zorgen dat de index wordt gebruikt, is een INSERT zoals deze:

INSERT INTO mytable (mycolmn)
SELECT mycolumn + 10 FROM mytable;


  1. Opdrachtregel voor het exporteren van Mysql XML-tabel

  2. Kan door komma's gescheiden waarden niet weergeven in een tabel

  3. Optimaal aantal verbindingen in verbindingspool

  4. Codeigniter Multidimensional Array invoegen als rijen in MySQL