SQL优化

wo554006164 2010-09-28 03:00:42
A表有35W条数据

视图A查询该表

CREATE TABLE A(
[id] [int] IDENTITY(1,1) NOT NULL,
[username] [nvarchar](50) NOT NULL,
[typeid] [nchar](1) NOT NULL,
[flag] [int] NOT NULL DEFAULT (0),
[addtime] [datetime] NOT NULL--还很多字段,这儿只列出主要的
CONSTRAINT [PK_iesoo_qyml] PRIMARY KEY CLUSTERED
(
[id] ASC
) ON [PRIMARY]
) ON [PRIMARY]

--视图A
CREATE VIEW View_A
AS
begin
SELECT username,typeid,flag,addtime
FROM A
WHERE (typeid= 'A') AND (flag = 1)
end

--测试查询
SELECT COUNT(1) FROM A --有30几万条数据
SELECT COUNT(1) FROM View_A --有20几万条数据

------问题:
SELECT username,count(1) N FROM View_A
GROUP BY username

--这个分组查询需要5秒。能不能更快些啊?
...全文
37 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zsforever 2010-09-28
1,加个索引在 typeid & flag 上或只加在typeid上 include flag
2,重新构建视图

再查询看看
回复
Q315054403 2010-09-28
不同的索引对不同的SQL有不同的效果
要求不说完,次次改,没有人能回答完
回复
wo554006164 2010-09-28
加了的。。


SELECT COUNT(1) FROM View_A --有20几万条数据
这句就要执行4秒
回复
cjzm83 2010-09-28

CREATE VIEW View_A
WITH SCHEMABINDING
AS
SELECT username,typeid,flag,addtime
FROM A
WHERE (typeid= 'A') AND (flag = 1)


CREATE CLUSTERED INDEX idx_username
ON View_A (username);



回复
ws_hgo 2010-09-28
加个索引试下
create index IX_type on A (typeid,flag )
回复
yhtapmys 2010-09-28
加索引没?
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2010-09-28 03:00
社区公告
暂无公告