关于表的索引创建 序列 以及表分区的创建

今天查询5千万条数据的数据库 在此记录一下

给表加入序列方法

首先创建序列
S_QUERYUSERS_PRIMARYKEY1 给序列起的名字

CREATE SEQUENCE   S_QUERYUSERS_PRIMARYKEY1 
MINVALUE 1                       ----序列最小值
NOMAXVALUE                       ----不设置最大值  无上限
START WITH 1                     ----从1开始计数
INCREMENT BY 1                   ----每次加1
NOCYCLE                          -----一直列加 不循环
NOCACHE;                         ----不建立缓冲区

创建触发器实现数据插入时触发主键自动增长

S_QUERYUSERS_TRIGGER 自己起名
QUERYUSERS 表名
(NEW.ID IS NULL) 中的ID为表中字段
S_QUERYUSERS_PRIMARYKEY1 创建的序列名

CREATE OR REPLACE TRIGGER  S_QUERYUSERS_TRIGGER
BEFORE INSERT ON QUERYUSERS                              
FOR EACH ROW WHEN(NEW.ID IS NULL) 
BEGIN 
        SELECT  
        S_QUERYUSERS_PRIMARYKEY1.NEXTVAL
        INTO:NEW.IDFROM dual;
END;

之后就可以添加数据测试了

删除序列

DROP SEQUENCE 序列名;

索引的创建 提高搜索速度

create index s_queryusers on QUERYUSERS(NAME); 

QUERYUSERS 表名
NAME 要加入索引的字段名

确实能提升很多 没加入索引之前 5千万条数据的条件查询需要5-6秒 加入索引之后只需要1秒左右

表分区的创建 可以提高效率

创建表结构
PARTITION BY RANGE (ID) — 根据ID分区
LIU_DATA_QUERYUSERS1 — 表空间
THAN (10000000) ------------------存放1千万条数据

CREATE TABLE QUERYUSERS01 (
  "ID" NUMBER NOT NULL ,
  "NAME" VARCHAR2(255) ,
  "SEX" VARCHAR2(255) ,
  "AGE" NUMBER ,
  "ADDRESS" VARCHAR2(255) ,
  "USERID" NUMBER ,
  PRIMARY KEY ("ID")
)
PARTITION BY RANGE (ID) 
( 
    PARTITION  QUERYUSERS1 VALUES LESS THAN (10000000) TABLESPACE LIU_DATA_QUERYUSERS1, 
    PARTITION QUERYUSERS2 VALUES LESS THAN (20000000) TABLESPACE LIU_DATA_QUERYUSERS2,
	PARTITION  QUERYUSERS3 VALUES LESS THAN (30000000) TABLESPACE LIU_DATA_QUERYUSERS3, 
    PARTITION QUERYUSERS4 VALUES LESS THAN (40000000) TABLESPACE LIU_DATA_QUERYUSERS4,
	PARTITION  QUERYUSERS5 VALUES LESS THAN (50000000) TABLESPACE LIU_DATA_QUERYUSERS5	
)

这个表分区暂时没用到 先记下 有机会尝试一下 5千万条数据 导入导出太耗时间了

你可能感兴趣的:(关于表的索引创建 序列 以及表分区的创建)