In a previous post I showed how to find the FK contraints that didn't have an index. Today I present you will a script to create in missing indexes (change the name of tablespace for the indexes for your schema).
SELECT ' create index '
|| constraint_name
|| ' on '
|| a.table_name
|| ' ('
|| a.columns
|| ') tablespace indx;'
FROM (SELECT SUBSTR (a.table_name, 1, 30) table_name
,SUBSTR (a.constraint_name, 1, 30) constraint_name
,MAX (DECODE (position, 1, SUBSTR (column_name, 1, 30), NULL))
|| MAX (
DECODE (position
,2, ', ' || SUBSTR (column_name, 1, 30)
,NULL))
|| MAX (
DECODE (position
,3, ', ' || SUBSTR (column_name, 1, 30)
,NULL))
|| MAX (
DECODE (position
,4, ', ' || SUBSTR (column_name, 1, 30)
,NULL))
|| MAX (
DECODE (position
,5, ', ' || SUBSTR (column_name, 1, 30)
,NULL))
|| MAX (
DECODE (position
,6, ', ' || SUBSTR (column_name, 1, 30)
,NULL))
|| MAX (
DECODE (position
,7, ', ' || SUBSTR (column_name, 1, 30)
,NULL))
|| MAX (
DECODE (position
,8, ', ' || SUBSTR (column_name, 1, 30)
,NULL))
|| MAX (
DECODE (position
,9, ', ' || SUBSTR (column_name, 1, 30)
,NULL))
|| MAX (
DECODE (position
,10, ', ' || SUBSTR (column_name, 1, 30)
,NULL))
|| MAX (
DECODE (position
,11, ', ' || SUBSTR (column_name, 1, 30)
,NULL))
|| MAX (
DECODE (position
,12, ', ' || SUBSTR (column_name, 1, 30)
,NULL))
|| MAX (
DECODE (position
,13, ', ' || SUBSTR (column_name, 1, 30)
,NULL))
|| MAX (
DECODE (position
,14, ', ' || SUBSTR (column_name, 1, 30)
,NULL))
|| MAX (
DECODE (position
,15, ', ' || SUBSTR (column_name, 1, 30)
,NULL))
|| MAX (
DECODE (position
,16, ', ' || SUBSTR (column_name, 1, 30)
,NULL))
columns
FROM user_cons_columns a, user_constraints b
WHERE a.constraint_name = b.constraint_name
AND b.constraint_type = 'R'
GROUP BY SUBSTR (a.table_name, 1, 30)
,SUBSTR (a.constraint_name, 1, 30)) a
,(SELECT SUBSTR (table_name, 1, 30) table_name
,SUBSTR (index_name, 1, 30) index_name
,MAX (
DECODE (column_position
,1, SUBSTR (column_name, 1, 30)
,NULL))
|| MAX (
DECODE (column_position
,2, ', ' || SUBSTR (column_name, 1, 30)
,NULL))
|| MAX (
DECODE (column_position
,3, ', ' || SUBSTR (column_name, 1, 30)
,NULL))
|| MAX (
DECODE (column_position
,4, ', ' || SUBSTR (column_name, 1, 30)
,NULL))
|| MAX (
DECODE (column_position
,5, ', ' || SUBSTR (column_name, 1, 30)
,NULL))
|| MAX (
DECODE (column_position
,6, ', ' || SUBSTR (column_name, 1, 30)
,NULL))
|| MAX (
DECODE (column_position
,7, ', ' || SUBSTR (column_name, 1, 30)
,NULL))
|| MAX (
DECODE (column_position
,8, ', ' || SUBSTR (column_name, 1, 30)
,NULL))
|| MAX (
DECODE (column_position
,9, ', ' || SUBSTR (column_name, 1, 30)
,NULL))
|| MAX (
DECODE (column_position
,10, ', ' || SUBSTR (column_name, 1, 30)
,NULL))
|| MAX (
DECODE (column_position
,11, ', ' || SUBSTR (column_name, 1, 30)
,NULL))
|| MAX (
DECODE (column_position
,12, ', ' || SUBSTR (column_name, 1, 30)
,NULL))
|| MAX (
DECODE (column_position
,13, ', ' || SUBSTR (column_name, 1, 30)
,NULL))
|| MAX (
DECODE (column_position
,14, ', ' || SUBSTR (column_name, 1, 30)
,NULL))
|| MAX (
DECODE (column_position
,15, ', ' || SUBSTR (column_name, 1, 30)
,NULL))
|| MAX (
DECODE (column_position
,16, ', ' || SUBSTR (column_name, 1, 30)
,NULL))
columns
FROM user_ind_columns
GROUP BY SUBSTR (table_name, 1, 30), SUBSTR (index_name, 1, 30)) b
WHERE a.table_name = b.table_name(+)
AND b.columns(+) LIKE a.columns || '%'
AND b.table_name IS NULL;
No comments:
Post a Comment
Os comentários são moderados.
The comments are moderated.