用DBA Studio看一下他的索引是哪几个字段组成的不就行了。
DBA Studio是非常强大的,要充分利用。:)
DBA Studio是非常强大的,要充分利用。:)
解决方案 »
- Oracle中的查询问题
- oracle目录结构问题
- 求一个存储过程在线等!!oracle的 谢谢
- 请教一个数据集成平台实时数据的导入导出问题
- dblink maximum process exceeded (150) 的错误怎么解决。
- 一些基础问题
- 如何最方便的将一个sqlserver数据库“移植”到oracle数据库??在线求教!!
- 客户端用exp导出数据库的错误!!!分不够再加!!!!!!!!
- 如何获得oracle数据库中所有的数据表的表名?用何语句可以实现?
- oracle数据库读取excel两列值
- 请大家支持七大奇迹选举,UP有分..
- oracle几个易混淆的术语:oracle_sid、db_name、instance_name......
程序完成之后再CREATE INDEX ON TABLE(COLUMN1,……),有什么问题吗?
我要做的一个程序也是如此,导数据的时候存在索引很慢,但查询的时候没有索引也慢,这是一个矛盾,我采用的解决办法,就是上面的。
但是INDEX的结构过于复杂,怎样才能够做到与以前的完全一致。
如果仅仅象楼上所说的CREATE INDEX ON TABLE(COLUMN1,……)那只是建立了一个具有默认结构的索引,并不一定和原来的一致。可以这样说,在我的程序中只知道数据库名和Table名,其他的一无所知。在这种情况下,实现上面所说的功能。各位大虾,帮忙了!
你可以到schema manager中,把你要操作的表的索引找到,察看参数,就可以反推出该索引的sql语句,然后等load完成了再重建。就是麻烦了点
如果你知道table名,那么你可以到dba_indexes表中查询该表的索引:
select * from dba_indexes where table_name=table名,
把所有的索引找到以后,你再到schema manager中,用这样的方法可以找到生成索引的sql语句。
你选新建索引,把所有的参数设置为和你要处理的索引的参数完全相同,然后点显示sql,建立该索引的sql语句就知道了,用这样的方法,但是比较麻烦一点,实在想不出别的办法了
你可以用,DBA STUDIO,它能查到所有的的索引,如果有SQL语句的,它可以显示,
查到这个,余下的应该很简单了。
我没试过,感觉可以,你试试!
---引用llm06() 先生他说错了一个地方,没有table_name 这一列,只有,index_name,owner,index_type,
你可以用index_name 来查。
这样做的话,如果数据库的索引不再改变的话,是可以的。但是在你的程序
写完之后。别人在使用过程中如果改变了索引的结构。那么就很可怕了。
大家有没有一种办法,直接在代码中得到索引的结构,然后重新建立。在这个
过程中应该是纯SQL语句,不应该使用工具。谁能帮忙?我的100分还没有送出去。
zhang_rui(zhang_rui)就我目前对索引的了解,没有办法从数据库中直接得到建索引的sql语句,有另外一个办法:
select * from dba_ind_columns where table_name=table名;
生成的结果包括,index_name,column_name,column_pos,还有其他的,实际对你而言就这些有用,你再根据这些值生成建索引sql语句。
create index index_name on table名(column_name,...)如果该索引有多列的话,column的排列顺序以column_pos为依据。
这样做只能满足基本的要求,对于索引的其他属性只能采用我前面说过的方法了。
SET SERVEROUTPUT ON SIZE 1000000DECLARE
CURSOR C_IND IS SELECT * FROM USER_INDEXES;
V_COL VARCHAR2(4000);
V_SQL VARCHAR2(4000);
BEGIN
FOR I IN C_IND LOOP
V_COL := NULL;
DECLARE
CURSOR C_IND_COL IS SELECT * FROM USER_IND_COLUMNS WHERE INDEX_NAME=I.INDEX_NAME ORDER BY COLUMN_POSITION ;
BEGIN
FOR J IN C_IND_COL LOOP
V_COL := V_COL ||','||J.COLUMN_NAME||' '||J.DESCEND;
END LOOP;
V_COL := SUBSTR(V_COL,2);
END;
V_SQL := 'CREATE INDEX '||I.INDEX_NAME||' ON '||I.TABLE_OWNER||'.'||I.TABLE_NAME||'('||V_COL||') TABLESPACE '||I.TABLESPACE_NAME||';';
DBMS_OUTPUT.PUT_LINE(V_SQL);
END LOOP;
END;
/ SPOOL OFF;
CREATE INDEX CW_GRQTXMSF$_GRCDH ON ZJCS.CW_GRQTXMSF(GRCDH ASC) TABLESPACE ZJIND_BJ;
CREATE INDEX DM_PHJC$_TYPE ON ZJCS.DM_PHJC(TYPE ASC) TABLESPACE ZJ_BJ;
CREATE INDEX DM_PHJS$_TYPE_COLCHANGED ON ZJCS.DM_PHJS(TYPE ASC,COL_CHANGED ASC) TABLESPACE ZJ_BJ;
CREATE INDEX DM_YHJSQX$RYDM_QXDM_KSDM_QXLX ON ZJCS.DM_KSRYQX(RYDM ASC,QXDM ASC,KSDM ASC,QXLX ASC) TABLESPACE ZJIND_BJ;
CREATE INDEX DWJF_DY$_DWCDH ON ZJCS.DWJF_DY(DWCDH ASC) TABLESPACE ZJIND_BJ;
CREATE INDEX DW_CD$_DWID ON ZJCS.DW_CD(DWID ASC) TABLESPACE ZJIND_BJ;
CREATE INDEX DW_GJJ$_DWID ON ZJCS.DW_GJJ(DWID ASC) TABLESPACE ZJIND_BJ;
CREATE INDEX DW_GJJ$_DWXYH ON ZJCS.DW_GJJ(DWXYH ASC) TABLESPACE ZJIND_BJ;
CREATE INDEX DW_JFQK$_DWID ON ZJCS.DW_JFQK(DWID ASC) TABLESPACE ZJIND_BJ;
CREATE INDEX GJJ_BJ$_DWID ON ZJCS.GJJ_BJ(DWID ASC) TABLESPACE ZJIND_BJ;
CREATE INDEX GJJ_BJ$_JSRQ ON ZJCS.GJJ_BJ(JSRQ ASC) TABLESPACE ZJIND_BJ;
CREATE INDEX GJJ_HJ$_DWID ON ZJCS.GJJ_HJ(DWID ASC) TABLESPACE ZJIND_BJ;
CREATE INDEX GJJ_HJ$_JSRQ ON ZJCS.GJJ_HJ(JSRQ ASC) TABLESPACE ZJIND_BJ;
CREATE INDEX GJJ_HJBG$_DWID ON ZJCS.GJJ_HJBG(DWID ASC) TABLESPACE ZJIND_BJ;
CREATE INDEX GJJ_HJBG$_DWID_JSRQ_ZJBZ ON ZJCS.GJJ_HJBG(DWID ASC,JSRQ ASC,ZJBZ ASC) TABLESPACE ZJIND_BJ;
CREATE INDEX GJJ_HJBG$_GRID ON ZJCS.GJJ_HJBG(GRID ASC) TABLESPACE ZJIND_BJ;
CREATE INDEX GJJ_HJQC$_DWID ON ZJCS.GJJ_HJQC(DWID ASC) TABLESPACE ZJIND_BJ;
CREATE INDEX GJJ_HJQC$_GRID ON ZJCS.GJJ_HJQC(GRID ASC) TABLESPACE ZJIND_BJ;
CREATE INDEX GJJ_HJQC$_JSRQ ON ZJCS.GJJ_HJQC(JSRQ ASC) TABLESPACE ZJIND_BJ;
CREATE INDEX UK_SYS_USER$_USER_SID ON ZJCS.SYS_USER(USER_SID ASC) TABLESPACE ZJIND_BJ;
CREATE INDEX UK_YL_YB$_DWXYH_JSRQ_JJLX ON ZJCS.YL_YB(DWXYH ASC,JSRQ ASC,JJLX ASC) TABLESPACE ZJIND_BJ;
CREATE INDEX UK_ZG_HMC$_BZHM ON ZJCS.ZG_HMC(BZHM ASC) TABLESPACE ZJIND_BJ;
CREATE INDEX UK_ZG_JYRY$_BZHM ON ZJCS.ZG_JYRY(BZHM ASC) TABLESPACE ZJIND_BJ;
CREATE INDEX YL_ZFYB$_BBID ON ZJCS.YL_ZFYB(BBID ASC) TABLESPACE ZJIND_BJ;PL/SQL 过程已成功完成。SQL> 这时就可以删除索引进行LOADER了,完成后执行该脚本,就能把索引重新创建了;
提示:可以把包含在USER_CONSTRAINTS中的索引名字剔除
使用sql* loader的direct path load方式,这种方式下根本就不更新索引,你用不着删除索引,只需要在load完成后rebuild索引就可以了。
但是这种方法的问题在于:在noarchive mode模式下,不产生redo log。
不知道满不满足你的需要
For both the conventional path and the direct path, SQL*Loader maintains all existing indexes for a table(http://otn.oracle.com/doc/server.804/a58244/ch08.htm#912)
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
使用工具:用PL/SQL DEVELOPER