sql >> Database teknologi >  >> RDS >> Oracle

Oracle:Enkelt flerkolonneindeks eller to enkeltkolonneindekser

Det kommer an på...

Det er ret usandsynligt, at et indeks på bare column1 vil være en fordel, hvis du allerede har et sammensat indeks på column1, column2 . Siden column1 er det førende indeks, forespørgsler mod tabellen, der kun har column1 som prædikat vil kunne bruge det sammensatte indeks. Hvis du ofte kører forespørgsler, der skal lave en fuld scanning af indekset og tilstedeværelsen af ​​column2 øger størrelsen af ​​indekset væsentligt, er det muligt, at et indeks på kun column1 ville være mere effektiv, da den fulde indeksscanning ville skulle gøre mindre I/O. Men det er en ret usædvanlig situation.

Et indeks på netop column2 kan være en fordel, hvis nogle af dine forespørgsler i tabellen angiver prædikater på kun column2 . Hvis der er relativt få distinkte værdier af column1 , er det muligt, at Oracle kunne lave en indeksspringsscanning ved hjælp af det sammensatte indeks for at tilfredsstille forespørgsler, der kun specificerer column2 som prædikat. Men en spring-scanning er sandsynligvis meget mindre effektiv end en rækkeviddescanning, så det er rimeligt sandsynligt, at et indeks på kun column2 ville gavne disse forespørgsler. Hvis der er et stort antal forskellige værdier for column1 , ville spring-scanningen være endnu mindre effektiv og et indeks på kun column2 ville være mere gavnligt. Selvfølgelig, hvis du aldrig forespørger i tabellen ved hjælp af column2 uden også at angive et prædikat på column1 , behøver du ikke et indeks på kun column2 .



  1. Forespørge data ved at forbinde to tabeller i to databaser på forskellige servere

  2. OPDATERE og ERSTAT en del af en streng

  3. Hvordan udtrækkes rækker fra et json-array ved hjælp af mysql udf json_extract 0.4.0?

  4. Kan Hibernate arbejde med MySQL's ON DUPLICATE KEY UPDATE-syntaks?