获取系统中建索引的sql
2007-12-12 12:27
190 查看
关键内容说明:
user_indexes: 用户基本索引信息;
user_ind_columns: 索引表字段的信息。
这里将 maxextents 默认设置为 unlimited
pctincrease 默认设置为 0;
v2:改进版
create or replace procedure w_proc_getindexsql(table_name varchar2) is
v_index_name varchar2(50) := '';
v_table_name varchar2(50) := table_name;
v_tablespace varchar2(50) := '';
v_pctfree number(18) := '';
v_initrans number(18) := '';
v_maxtrans number(18) := '';
v_initial number(18) := '';
v_next number(18) := '';
v_minextents number(18) := '';
v_maxextents number(18) := '';
v_pctincrease number(18) := '';
v_indexcol varchar2(255) := '';
v_uniqueness varchar2(30) := '';
cursor c_index is
select ind.index_name,
ind.table_name,
ind.tablespace_name,
ind.pct_free,
ind.ini_trans,
ind.max_trans,
ind.initial_extent,
ind.next_extent,
ind.min_extents,
ic.column_name,
ind.uniqueness
from user_indexes ind, user_ind_columns ic
where ic.index_name = ind.index_name
and ind.table_name = upper(v_table_name);
begin
open c_index;
fetch c_index into v_index_name,v_table_name, v_tablespace, v_pctfree, v_initrans, v_maxtrans, v_initial, v_next, v_minextents, v_indexcol, v_uniqueness;
dbms_output.put_line('');
dbms_output.put_line('');
dbms_output.put_line('----' || v_table_name);
while c_index % found loop
dbms_output.put_line('--v_uniqueness:' || v_uniqueness);
if v_uniqueness = 'UNIQUE' then
dbms_output.put_line('alter table ' || v_table_name);
dbms_output.put_line('add constraint ' || v_index_name || ' primary key (' || v_indexcol || ')');
dbms_output.put_line('using index ');
elsif v_uniqueness = 'NONUNIQUE' then
dbms_output.put_line('create index ' || v_index_name);
dbms_output.put_line(' on ' || v_table_name || '(' || v_indexcol || ')');
end if;
dbms_output.put_line(' tablespace ' || v_tablespace);
dbms_output.put_line(' pctfree ' || v_pctfree);
dbms_output.put_line(' initrans ' || v_initrans);
dbms_output.put_line(' maxtrans ' || v_maxtrans);
dbms_output.put_line(' storage (');
dbms_output.put_line(' initial ' || v_initial/1024 || 'k');
dbms_output.put_line(' next ' || v_next/1024 || 'k');
dbms_output.put_line(' minextents ' || v_minextents);
dbms_output.put_line(' maxextents unlimited ');
dbms_output.put_line(' pctincrease 0);');
dbms_output.put_line('');
fetch c_index into v_index_name,v_table_name, v_tablespace, v_pctfree, v_initrans, v_maxtrans, v_initial, v_next, v_minextents, v_indexcol, v_uniqueness;
end loop;
close c_index;
end w_proc_getindexsql;
create or replace procedure w_proc_getindexsql(table_name varchar2) is
v_index_name varchar2(50) := '';
v_table_name varchar2(50) := table_name;
v_tablespace varchar2(50) := '';
v_pctfree number(18) := '';
v_initrans number(18) := '';
v_maxtrans number(18) := '';
v_initial number(18) := '';
v_next number(18) := '';
v_minextents number(18) := '';
v_maxextents number(18) := '';
v_pctincrease number(18) := '';
v_indexcol varchar2(255) := '';
cursor c_index is
select ind.index_name,
ind.table_name,
ind.tablespace_name,
ind.pct_free,
ind.ini_trans,
ind.max_trans,
ind.initial_extent,
ind.next_extent,
ind.min_extents,
ic.column_name
from user_indexes ind, user_ind_columns ic
where ic.index_name = ind.index_name
and ind.table_name = upper(v_table_name);
begin
open c_index;
fetch c_index into v_index_name,v_table_name, v_tablespace, v_pctfree, v_initrans, v_maxtrans, v_initial, v_next, v_minextents, v_indexcol;
while c_index % found loop
dbms_output.put_line('create index ' || v_index_name);
dbms_output.put_line(' on ' || v_table_name || '(' || v_indexcol || ')');
dbms_output.put_line(' tablespace ' || v_tablespace);
dbms_output.put_line(' pctfree ' || v_pctfree);
dbms_output.put_line(' initrans ' || v_initrans);
dbms_output.put_line(' maxtrans ' || v_maxtrans);
dbms_output.put_line(' storage (');
dbms_output.put_line(' initial ' || v_initial/1024 || 'k');
dbms_output.put_line(' next ' || v_next/1024 || 'k');
dbms_output.put_line(' minextents ' || v_minextents);
dbms_output.put_line(' maxextents unlimited ');
dbms_output.put_line(' pctincrease 0);');
fetch c_index into v_index_name,v_table_name, v_tablespace, v_pctfree, v_initrans, v_maxtrans, v_initial, v_next, v_minextents, v_indexcol;
end loop;
close c_index;
end w_proc_getindexsql;
user_indexes: 用户基本索引信息;
user_ind_columns: 索引表字段的信息。
这里将 maxextents 默认设置为 unlimited
pctincrease 默认设置为 0;
v2:改进版
create or replace procedure w_proc_getindexsql(table_name varchar2) is
v_index_name varchar2(50) := '';
v_table_name varchar2(50) := table_name;
v_tablespace varchar2(50) := '';
v_pctfree number(18) := '';
v_initrans number(18) := '';
v_maxtrans number(18) := '';
v_initial number(18) := '';
v_next number(18) := '';
v_minextents number(18) := '';
v_maxextents number(18) := '';
v_pctincrease number(18) := '';
v_indexcol varchar2(255) := '';
v_uniqueness varchar2(30) := '';
cursor c_index is
select ind.index_name,
ind.table_name,
ind.tablespace_name,
ind.pct_free,
ind.ini_trans,
ind.max_trans,
ind.initial_extent,
ind.next_extent,
ind.min_extents,
ic.column_name,
ind.uniqueness
from user_indexes ind, user_ind_columns ic
where ic.index_name = ind.index_name
and ind.table_name = upper(v_table_name);
begin
open c_index;
fetch c_index into v_index_name,v_table_name, v_tablespace, v_pctfree, v_initrans, v_maxtrans, v_initial, v_next, v_minextents, v_indexcol, v_uniqueness;
dbms_output.put_line('');
dbms_output.put_line('');
dbms_output.put_line('----' || v_table_name);
while c_index % found loop
dbms_output.put_line('--v_uniqueness:' || v_uniqueness);
if v_uniqueness = 'UNIQUE' then
dbms_output.put_line('alter table ' || v_table_name);
dbms_output.put_line('add constraint ' || v_index_name || ' primary key (' || v_indexcol || ')');
dbms_output.put_line('using index ');
elsif v_uniqueness = 'NONUNIQUE' then
dbms_output.put_line('create index ' || v_index_name);
dbms_output.put_line(' on ' || v_table_name || '(' || v_indexcol || ')');
end if;
dbms_output.put_line(' tablespace ' || v_tablespace);
dbms_output.put_line(' pctfree ' || v_pctfree);
dbms_output.put_line(' initrans ' || v_initrans);
dbms_output.put_line(' maxtrans ' || v_maxtrans);
dbms_output.put_line(' storage (');
dbms_output.put_line(' initial ' || v_initial/1024 || 'k');
dbms_output.put_line(' next ' || v_next/1024 || 'k');
dbms_output.put_line(' minextents ' || v_minextents);
dbms_output.put_line(' maxextents unlimited ');
dbms_output.put_line(' pctincrease 0);');
dbms_output.put_line('');
fetch c_index into v_index_name,v_table_name, v_tablespace, v_pctfree, v_initrans, v_maxtrans, v_initial, v_next, v_minextents, v_indexcol, v_uniqueness;
end loop;
close c_index;
end w_proc_getindexsql;
create or replace procedure w_proc_getindexsql(table_name varchar2) is
v_index_name varchar2(50) := '';
v_table_name varchar2(50) := table_name;
v_tablespace varchar2(50) := '';
v_pctfree number(18) := '';
v_initrans number(18) := '';
v_maxtrans number(18) := '';
v_initial number(18) := '';
v_next number(18) := '';
v_minextents number(18) := '';
v_maxextents number(18) := '';
v_pctincrease number(18) := '';
v_indexcol varchar2(255) := '';
cursor c_index is
select ind.index_name,
ind.table_name,
ind.tablespace_name,
ind.pct_free,
ind.ini_trans,
ind.max_trans,
ind.initial_extent,
ind.next_extent,
ind.min_extents,
ic.column_name
from user_indexes ind, user_ind_columns ic
where ic.index_name = ind.index_name
and ind.table_name = upper(v_table_name);
begin
open c_index;
fetch c_index into v_index_name,v_table_name, v_tablespace, v_pctfree, v_initrans, v_maxtrans, v_initial, v_next, v_minextents, v_indexcol;
while c_index % found loop
dbms_output.put_line('create index ' || v_index_name);
dbms_output.put_line(' on ' || v_table_name || '(' || v_indexcol || ')');
dbms_output.put_line(' tablespace ' || v_tablespace);
dbms_output.put_line(' pctfree ' || v_pctfree);
dbms_output.put_line(' initrans ' || v_initrans);
dbms_output.put_line(' maxtrans ' || v_maxtrans);
dbms_output.put_line(' storage (');
dbms_output.put_line(' initial ' || v_initial/1024 || 'k');
dbms_output.put_line(' next ' || v_next/1024 || 'k');
dbms_output.put_line(' minextents ' || v_minextents);
dbms_output.put_line(' maxextents unlimited ');
dbms_output.put_line(' pctincrease 0);');
fetch c_index into v_index_name,v_table_name, v_tablespace, v_pctfree, v_initrans, v_maxtrans, v_initial, v_next, v_minextents, v_indexcol;
end loop;
close c_index;
end w_proc_getindexsql;
相关文章推荐
- 【SQL-码农】SQL获取系统年月日时分秒
- SQL 获取系统当前时间的函数
- 获取系统信息的常用SQL语句
- Firebird SQL 获取系统数据
- 【杂谈】在XP下安装SQL 2005开发版时出现:SQL Server 安装程序无法获取 ASPNET 帐户的系统帐户信息
- 使用WinDbg获取SSDT 系统服务描述表的函数服务号(索引)
- SQL 获取列名 利用系统表
- 【VC++】SQLGetInstalledDrivers 获取系统驱动。
- 获取系统当前日期的指定多少天的数据sql
- SQL获取某表的索引或约束,并确定索引归属列,获取表中的自动增长列名。
- 在Oracle表控件使用自定义SQL给字段获取系统日期
- 获取oracle系统数据的sql
- SQL时间第一期_获取系统年月日时分秒
- 通过系统表获取SQL,Access,Oracle数据库的元数据信息
- 一天一点T-SQL:常用获取基础信息系统存储过程和函数
- 根据系统进程pid获取sql【脚本收藏】
- 获取当前系统日期 java.sql.Date 转换 java.sql.Date
- SQL获取系统当前时间按“mm/dd/yyyy”格式输出
- sql 2000以及2005以上获取数据库中所有的表(不包括系统表)