-- Az indexekkel kapcsolatos speciális lehetőségeket lásd az ab2_oracle.docx állományban. -- (pl. COMPRESS, REVERSE, FUNCTION-BASED, BITMAP, INDEX ORAGANIZED) -- Információk az indexekről az adatszótár nézetekben: -- DBA_INDEXES -- DBA_IND_COLUMNS (indexbeli oszlopok) -- DBA_IND_EXPRESSIONS (függvény alapú index kifejezései) /***** DBA_INDEXES Indexek: a lekérdezések hatékonyabb végrehajtását (a sorok gyorsab megtalálását) szolgálják. ----------- TABLE_OWNER a tábla tulajdonosa TABLE_NAME az indexelt tábla neve OWNER az index tulajdonosa INDEX_NAME index neve INDEX_TYPE index típusa, pl. NORMAL, BITMAP, CLUSTER, FUNCTION-BASED NORMAL stb. UNIQUENESS előfordulhatnak-e azonos értékek COMPRESSION az ismétlődő értékek hatékonyabb tárolását szolgálja PREFIX_LENGTH tömörítés hány oszlopnyi legyen DBA_IND_COLUMNS Mely oszlopok vannak indexelve? Erről ad információt. ----------- TABLE_OWNER a tábla tulajdonosa TABLE_NAME az indexelt tábla neve INDEX_OWNER az index tulajdonosa INDEX_NAME index neve COLUMN_NAME indexelt oszlop neve COLUMN_POSITION az oszlop hányadik az indexelt oszlopok sorrendjében DESCEND csökkenő-e DBA_IND_EXPRESSIONS Ha egy index valamilyen kifejezés kiszámolt értékei alapján épül fel, erről ad információt. ------------------- TABLE_OWNER a tábla tulajdonosa TABLE_NAME az indexelt tábla neve INDEX_OWNER az index tulajdonosa INDEX_NAME index neve COLUMN_EXPRESSION a kifejezés, aminek értékei alapján az index felépül COLUMN_POSITION a kifejezés hányadik az index bejegyzések sorrendjében *****/ -- eldobjuk a korábbi indexeket drop index emp1; drop index emp2; drop index emp3; drop index emp4; drop index emp5; drop index emp6; -- előtte: CREATE TABLE emp AS SELECT * FROM nikovits.emp; CREATE UNIQUE INDEX emp1 ON emp (ename); CREATE INDEX emp2 ON emp (job, sal DESC); CREATE INDEX emp3 ON emp (job, sal) REVERSE; CREATE INDEX emp4 ON emp (deptno, job, sal) COMPRESS 2; CREATE BITMAP INDEX emp5 ON emp (mgr); CREATE INDEX emp6 ON emp (SUBSTR(ename, 2, 2), job); /***** A fenti indexekre vonatkozó információk az adatszótár nézetekben: -------------------------------------------------------------------- SELECT table_name, index_name, index_type, uniqueness, compression, prefix_length FROM dba_indexes WHERE table_owner='NIKOVITS' AND table_name='EMP'; tab ind index_type unique compress prefix ------------------------------------------------------------------ EMP EMP1 NORMAL UNIQUE DISABLED null EMP EMP2 FUNCTION-BASED NORMAL NONUNIQUE DISABLED null EMP EMP3 NORMAL/REV NONUNIQUE DISABLED null EMP EMP4 NORMAL NONUNIQUE ENABLED 2 EMP EMP5 BITMAP NONUNIQUE DISABLED null EMP EMP6 FUNCTION-BASED NORMAL NONUNIQUE DISABLED null A fenti eredményből látható, hogy a csökkenő sorrendű oszlopot (EMP2 indexben) is úgy tekinti a rendszer, mintha függvény alapú index volna. Valószínűleg úgy van implementálva, hogy (-1)-el megszorozza a kulcsértékeket és ezeket tárolja a levél szinten. SELECT index_name, column_name, column_position, descend FROM dba_ind_columns WHERE table_owner='NIKOVITS' AND table_name='EMP'; ind col pos desc ----------------------------- EMP1 ENAME 1 ASC EMP2 JOB 1 ASC EMP2 SYS_NC00009$ 2 DESC EMP3 JOB 1 ASC EMP3 SAL 2 ASC EMP4 DEPTNO 1 ASC EMP4 JOB 2 ASC EMP4 SAL 3 ASC EMP5 MGR 1 ASC EMP6 SYS_NC00010$ 1 ASC EMP6 JOB 2 ASC SELECT index_name, column_position, column_expression FROM dba_ind_expressions WHERE table_owner='NIKOVITS' AND table_name='EMP'; ind pos expr ---------------------- EMP2 2 "SAL" EMP6 1 SUBSTR("ENAME",2,2) *****/