首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
MS-SQL Server
基础类
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
取消引用
结帖去...
管理菜单
页面风格切换
标准风格
老版本论坛
如何提高多个类似的查询语句速度?
[已结帖,结帖人:ThreeColor]
加为好友
发送私信
在线聊天
ThreeColor
三色
等级:
可用分等级:
中农
总技术分:
1200
总技术分排名:
17049
结帖率:
97.18%
发表于:
2008-08-21 14:24:34
楼主
一次操作要进行几百个类似的select语句:
select count(A) from tbl where A='a1'
select count(A) from tbl where A='a2'
select count(A) from tbl where A='a3'
select count(A) from tbl where A='a4'
...
select count(A) from tbl where A='an'
单独一条的语句速度还可以,0点几秒就完成了(在几十万数据中查询,数据量每天以几千的速度增加)。
但是一次操作就要执行上面类似的语句500个,一次操作结束大概需要30s,因为操作比较频繁,所以感觉速度太慢了。
有没有什么方法可以提高速度啊
问题点数:
20
回复次数:
7
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
roy_88
中国风
等级:
可用分等级:
掌柜
总技术分:
68061
总技术分排名:
110
2
4
发表于:
2008-08-21 14:31:59
1
楼 得分:
5
SQL code
select
A,
count
(
*
)
as
con
from
tbl
group
by
A
--改為這樣取值
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
wufeng4552
水族杰綸
等级:
可用分等级:
中农
总技术分:
22674
总技术分排名:
618
发表于:
2008-08-21 14:35:23
2
楼 得分:
5
A是否有索引?
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
sumaoyi
等级:
可用分等级:
贫农
总技术分:
77
总技术分排名:
107901
发表于:
2008-08-21 14:49:47
3
楼 得分:
5
SQL code
select
count
(
*
)
from
tbl
group
by
A
让系统自己去找TBL表里面的索引去COUNT,那样不会那么麻烦,只要这个表有索引就可以
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
ThreeColor
三色
等级:
可用分等级:
中农
总技术分:
1200
总技术分排名:
17049
发表于:
2008-08-22 09:39:16
4
楼 得分:
0
方法确实不错。
以11句select语句在查询分析器里面,我以前的方法需要约170ms,用楼上诸位方法后约50ms,速度提高了3倍.
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jasonren
jason
等级:
可用分等级:
中农
总技术分:
1285
总技术分排名:
16035
发表于:
2008-08-22 09:45:30
5
楼 得分:
5
如果只是select,可以考虑在A上加簇集索引.性能会更好
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
ThreeColor
三色
等级:
可用分等级:
中农
总技术分:
1200
总技术分排名:
17049
发表于:
2008-08-22 09:59:47
6
楼 得分:
0
我在A上加了索引,发现时间一样,没变化
我不太懂索引,就直接在企业管理器里面创建了索引,A字段升序。
簇集索引有什么特别的吗?
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
ThreeColor
三色
等级:
可用分等级:
中农
总技术分:
1200
总技术分排名:
17049
发表于:
2008-08-22 10:14:36
7
楼 得分:
0
超奇怪。
首先学会了创建簇集索引。
在创建A簇集索引时提示有主键所以不能创建,
然后我就把主键(主键是ID,int,自动增加,插入数据时我自动计算当前最大值然后+1保证没有重复)去掉,
接着在A上创建了簇集索引,成功了,然后查询发现时间是缩短了。
没创建索引前稳定47ms,以上步骤后多次测试时间各异,30\33\47ms不定,可以看到时间上是缩短了。
接着我把ID恢复成主键(没有提示错误,好奇怪),然后再测试时间,不变。
最后我把A上的索引选项簇集(CLUSTERED)的勾去掉,保存后再查询结果大出意料以外,时间大大缩短了,多次测试时间有17\30\33ms且17\30出现的次数居多。
感觉先搞一个簇集索引,然后再把簇集簇集选项去掉,速度可以提高很多。
是不是加了簇集索引后整个数据变得有序了,查询自然就快了,然后即时把簇集选项去掉但是数据已经有序了所以速度不但没降反而上升。
是不是随着数据量的继续增加因为没有簇集所以查询速度会慢慢变慢,然后再搞一次簇集后又能提升?
修改
删除
举报
引用
回复
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
结帖去...
管理菜单
页面风格切换
标准风格
老版本论坛
网站简介
-
广告服务
-
网站地图
-
帮助
-
联系方式
-
诚聘英才
-
English
-
问题报告
北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
abc推荐给好友