ho tavoloOracle: indice a più colonne singolo o due indici di colonna singoli
create table1(
column1 number(10,
column2 number(10),
column3 number(10)
);
column1
è chiave primaria column2
e column3
è la chiave vincolo univoco
ho creato degli Esteri su 2 colonne
alter table table1
add constraint table1_contr1 unique(column1,column2)
using index tablespace tbs1;
quando sono andato a creare l'indice su entrambe le colonne come
create index table1_idx1 on table1(column1,coulmn2);
ERROR at line 1:
ORA-01408: such column list already indexed
Quindi Oracle ha già creato l'indice quando creo un vincolo univoco. Ma se creo indice separatamente si tratta di accettare quelle
create index table1_idx1 on table1(column1);
create index table2_idx2 on table2(column2);
Ora la mia domanda è, dopo aver vincolo univoco su entrambe le colonne faccio ancora bisogno di preoccuparsi di creare un indice su ogni colonna? Senza indice su ogni colonna avrà un impatto sulle prestazioni durante l'accesso all'oggetto?
È su Oracle 11R2.
Quando dici 'column2' e' column3' sono una chiave esterna, vuoi dire che la combinazione di 'column2, column3' è una chiave esterna per una singola tabella genitore con una chiave primaria composta? O che ognuna di 'column2' e' column3' sono chiavi esterne per separare le tabelle genitore con le chiavi primarie a colonna singola? Se 'column1' è già la chiave primaria, perché stai creando un vincolo univoco sulla combinazione di' column1' e 'column2'. 'column1' è già unico quindi la combinazione di esso e di qualsiasi altra cosa sarà unica. Intendevi che stai creando un vincolo univoco su 'col2, col3'? –
Mi dispiace, errore di battitura. Sto creando un vincolo univoco su (col2, col3). – user2824874