CREATE TABLE PATDDPF ( --出勤表
NOEM21 varchar (8) COLLATE Chinese_PRC_CI_AS NOT NULL , --职员编号
YMAT21 varchar (6) COLLATE Chinese_PRC_CI_AS NOT NULL , --出勤年月
DDAT21 varchar (2) COLLATE Chinese_PRC_CI_AS NOT NULL --出勤日
primary key (noem21,ymat21,ddat21),
IDCO21 varchar (2) COLLATE Chinese_PRC_CI_AS NULL ,
CDDP21 varchar (6) COLLATE Chinese_PRC_CI_AS NULL ,
CDJW21 varchar (2) COLLATE Chinese_PRC_CI_AS NULL ,
IDWK21 varchar (1) COLLATE Chinese_PRC_CI_AS NULL ,
HRJS21 numeric(3, 1) NULL ,
HRBK21 numeric(3, 1) NULL , --出勤时间
HRSK21 numeric(3, 1) NULL ,
HRSG21 numeric(3, 1) NULL ,
)
GO--这是一张出勤表,数据有七十多万条,每次查询时速度都非常慢,如何优化查询?
NOEM21 varchar (8) COLLATE Chinese_PRC_CI_AS NOT NULL , --职员编号
YMAT21 varchar (6) COLLATE Chinese_PRC_CI_AS NOT NULL , --出勤年月
DDAT21 varchar (2) COLLATE Chinese_PRC_CI_AS NOT NULL --出勤日
primary key (noem21,ymat21,ddat21),
IDCO21 varchar (2) COLLATE Chinese_PRC_CI_AS NULL ,
CDDP21 varchar (6) COLLATE Chinese_PRC_CI_AS NULL ,
CDJW21 varchar (2) COLLATE Chinese_PRC_CI_AS NULL ,
IDWK21 varchar (1) COLLATE Chinese_PRC_CI_AS NULL ,
HRJS21 numeric(3, 1) NULL ,
HRBK21 numeric(3, 1) NULL , --出勤时间
HRSK21 numeric(3, 1) NULL ,
HRSG21 numeric(3, 1) NULL ,
)
GO--这是一张出勤表,数据有七十多万条,每次查询时速度都非常慢,如何优化查询?
create clustered index idx_职员编号 on PATDDPF(职员编号) create nonclustered index idx_出勤年月 on PATDDPF(出勤年月)
,@DDAT AS VARCHAR(2)
AS
SELECT NOEM21
,YMAT21
,DDAT21
FROM PATDDPF
WHERE YMAT21 = @YMAT
AND DDAT21 = @DDAT
执行时非常慢!!
--
YMAT21建组合索引
create index 索引名 on 表名(YMAT21,YMAT21)
2.避免或简化排序
3.消除对大型表行数据的顺序存取
4.避免相关子查询
5.避免困难的正规表达式
6.使用临时表加速查询
7.用排序来取代非顺序存取数据库的查询优化技术
http://blog.csdn.net/suyiming/archive/2007/11/22/1897606.aspx