首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 如何提高多个类似的查询语句速度? [已结帖,结帖人:ThreeColor]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ThreeColor
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于: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  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • roy_88
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

      4

    发表于:2008-08-21 14:31:591楼 得分:5
    SQL code
    select A,count(*) as con from tbl group by A
    --改為這樣取值
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wufeng4552
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 14:35:232楼 得分:5
    A是否有索引?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sumaoyi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 14:49:473楼 得分:5
    SQL code
    select count(*) from tbl group by A

    让系统自己去找TBL表里面的索引去COUNT,那样不会那么麻烦,只要这个表有索引就可以
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ThreeColor
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 09:39:164楼 得分:0
    方法确实不错。
    以11句select语句在查询分析器里面,我以前的方法需要约170ms,用楼上诸位方法后约50ms,速度提高了3倍.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jasonren
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 09:45:305楼 得分:5
    如果只是select,可以考虑在A上加簇集索引.性能会更好
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ThreeColor
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 09:59:476楼 得分:0
    我在A上加了索引,发现时间一样,没变化
    我不太懂索引,就直接在企业管理器里面创建了索引,A字段升序。
    簇集索引有什么特别的吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ThreeColor
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 10:14:367楼 得分: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