今天查询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千万条数据 导入导出太耗时间了