怎么优化这个查询
我的系统有一张人口基本信息表,有219万数据,表信息如下,
CREATE TABLE psbw_rkjbxx
(rid NUMBER NOT NULL,
gjdq NVARCHAR2(6) DEFAULT ('156') NOT NULL,
ewx NVARCHAR2(32) DEFAULT (' '),
ewm NVARCHAR2(32) DEFAULT (' '),
zwx NVARCHAR2(24) DEFAULT (' '),
zwm NVARCHAR2(36) DEFAULT (' '),
xm NVARCHAR2(60) NOT NULL,
cym NVARCHAR2(60),
xb NVARCHAR2(12) NOT NULL,
mz NVARCHAR2(12),
csrq DATE NOT NULL,
gmsfhm NVARCHAR2(36) DEFAULT (' '),
ssxq NVARCHAR2(12),
xz NVARCHAR2(140),
zjmc1 NVARCHAR2(12),
zjhm1 NVARCHAR2(36),
yxq1 DATE,
zjmc2 NVARCHAR2(12),
zjhm2 NVARCHAR2(36),
yxq2 DATE,
tzse NUMBER(8,2) DEFAULT (0.00),
zzmm NVARCHAR2(12),
hyzk NVARCHAR2(12),
whcd NVARCHAR2(12),
sf NVARCHAR2(12),
dwcsid NUMBER,
fwcs NVARCHAR2(80),
rzsj DATE,
zy NVARCHAR2(12),
yddh1 NVARCHAR2(60),
gzdxf NCHAR(2) DEFAULT ('n') NOT NULL,
bz NVARCHAR2(512),
sxym NCHAR(2) DEFAULT ('n'),
kqym NCHAR(2) DEFAULT ('n'),
rwsj DATE,
twsj DATE,
fybd NVARCHAR2(128),
jrsf NVARCHAR2(12),
jg NVARCHAR2(12),
zjxy NVARCHAR2(12),
byzk NVARCHAR2(12),
mxtz NVARCHAR2(128),
tlyxq NVARCHAR2(20),
rjka NVARCHAR2(40),
rjrq DATE,
ddrq DATE,
lzrq DATE,
tlsy NVARCHAR2(40),
jddx NVARCHAR2(100),
tc NVARCHAR2(128),
wdcjszh NVARCHAR2(40),
wdccph NVARCHAR2(40),
wdclx NVARCHAR2(12),
sg NVARCHAR2(20),
gwrq NVARCHAR2(1024),
lkrq DATE,
sf1 NVARCHAR2(12),
tc1 NVARCHAR2(12),
jddwlxdh NVARCHAR2(60),
rwtyqk NVARCHAR2(512),
zdylb NVARCHAR2(24),
lastupdatetime DATE)
PCTFREE 10
INITRANS 1
MAXTRANS 255
TABLESPACE psbw_db
STORAGE (
INITIAL 65536
MINEXTENTS 1
MAXEXTENTS 2147483645
)
/
-- Indexes for PSBW_RKJBXX
CREATE INDEX idx_psbw_rkjbxx_csrq ON psbw_rkjbxx
(
csrq ASC
)
PCTFREE 10
INITRANS 2
MAXTRANS 255
TABLESPACE psbw
STORAGE (
INITIAL 65536
MINEXTENTS 1
MAXEXTENTS 2147483645
)
NOLOGGING
/
CREATE INDEX idx_psbw_rkjbxx_gmsfhm ON psbw_rkjbxx
(
gmsfhm ASC
)
PCTFREE 10
INITRANS 2
MAXTRANS 255
TABLESPACE psbw
STORAGE (
INITIAL 65536
MINEXTENTS 1
MAXEXTENTS 2147483645
)
NOLOGGING
/
CREATE INDEX idx_psbw_rkjbxx_xm ON psbw_rkjbxx
(
xm ASC
)
PCTFREE 10
INITRANS 2
MAXTRANS 255
TABLESPACE psbw
STORAGE (
INITIAL 65536
MINEXTENTS 1
MAXEXTENTS 2147483645
)
NOLOGGING
/
CREATE INDEX idx_psbw_rkjbxx_xz ON psbw_rkjbxx
(
xz ASC
)
PCTFREE 10
INITRANS 2
MAXTRANS 255
TABLESPACE psbw
STORAGE (
INITIAL 65536
MINEXTENTS 1
MAXEXTENTS 2147483645
)
NOLOGGING
/
-- Constraints for PSBW_RKJBXX
ALTER TABLE psbw_rkjbxx
ADD PRIMARY KEY (rid)
USING INDEX
PCTFREE 10
INITRANS 2
MAXTRANS 255
TABLESPACE psbw_db
STORAGE (
INITIAL 65536
MINEXTENTS 1
MAXEXTENTS 2147483645
)
/
其中有两个字段:gwrq(高危人群),gzdxf(工作对象否)做条件查询时候速度很慢。
这219万数据:1. gwrq 大部分数据是空, 当我用到: gwrq is not null 做条件查询数度很慢,
2.gzdxf大部分值是‘n’,少部分值是:‘y’ 但我用:gzdxf =‘n’ 速度快,gzdxf =‘y’查询需要40多分钟。查询数据多反而快。
我怎么优化.