给left join关联关系字段加索引
2018-07-04left join是相当耗资源的操作,如果关联的字段没有索引的话,速度是很慢的,所以如果有left join的话,最好用索引字段取关联。
创建索引会消耗大量资源,会导致数据库死锁,最好在非高峰时段创建。
1、将left join关联关系字段都加为索引,
2、prepare TS
ym=`date +%Y%m`
nm=`date -d '1month' +%Y%m`
its_src=CONTACT_DATA_IDX_TS
its_dst=CONTACT_DATA_IDX_TS_${ym}
idx_ts1=/data3/oracle/contact_data_idx_ts_${nm}_1.dbf
sqlplus abc/ta123456 << EOF
set hea off
--alter tablespace $its_src rename to $its_dst;
CREATE TABLESPACE $its_src DATAFILE '$idx_ts1' SIZE 512M AUTOEXTEND ON NEXT 256M MAXSIZE UNLIMITED BLOCKSIZE 8k;
3、创建索引并指定表空间。
CREATE INDEX IDX_LOGIN_MESSAGE_CID on LOGIN_MESSAGE(COMPANY_ID);DROP INDEX index_name ON table_name
CREATE INDEX IDX_contact_data_view_user_id on contact_data(view_user_id) TABLESPACE CONTACT_DATA_IDX_TS;--为索引指定表空间
CREATE INDEX IDX_contact_data_NAME on contact_data(NAME) TABLESPACE CONTACT_DATA_IDX_TS;
4、修改index的表空间
alter index pk_t_user rebuild tablespace 111_inx;
5、索引能提高检索数据的效率,会一定程度降低数据insert的效率;如果新增的数据是按照索引的顺序递增或递减,则无需定期重建索引;反之,则应该定期重建。
分类:数据库 | 标签: index、oracle |