SQL 语句Count(*)如何优化

dp517849241 2014-10-29 03:22:24
select count(*) from His_Section where userid>=100

表中有3000多万数据,查询要16秒才有结果。

求高手指点如何优化,或者用系统存储过程或者函数代替什么的都可以

EXEC SP_SPACEUSED 'His_Section' 这样效率很高,但是不能加筛选条件
...全文
530 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Q315054403 2014-10-30
  • 打赏
  • 举报
回复
简单的在USER_ID上建个索引(既然已有PK、CLUSTER) 要么从设计上解决,就稍麻烦点了
吉普赛的歌 2014-10-29
  • 打赏
  • 举报
回复
按历史记录水平分表或者按功能性垂直分表吧
专注or全面 2014-10-29
  • 打赏
  • 举报
回复
这个问题能否“逃避”开来? 一般来说,人们对于数据,关心的更多的是内容, 就比如我去淘宝上搜索瓜子,我关系的是瓜子本身,而不是有多少条瓜子的信息 另外,这么大的数据量,关系多少条数,应该不是侧重点,比如1999999条数据和2000001条数据,这个意义不大吧 另外就想京东的ipad客户端那样,只要往下拉,他就不断地显示,关注于内容本身,连神马下一页下一页的就免了 算了,回了跟没回一样
  • 打赏
  • 举报
回复
where 后面的动态条件当然可以,但是不能太多,否则就得建很多索引,效率会很差
KeepSayingNo 2014-10-29
  • 打赏
  • 举报
回复
就单个表来说无非就是在查询条件字段上加索引来提升查询速度,你说语句可能会更复杂,那就需要特殊问题特殊分析
Tiger_Zhao 2014-10-29
  • 打赏
  • 举报
回复
随意条件根本没法优化。
设计方案决定了低性能,苦果自吞。
dp517849241 2014-10-29
  • 打赏
  • 举报
回复
引用 1 楼 Tiger_Zhao 的回复:
给 userid 单独建索引,或者 userid 是某个复合索引的第一列。
这只是一个例子,我实际开发中,表名和 where后面的条件都是页面传过来的。所以where后面有不确定性。
还在加载中灬 2014-10-29
  • 打赏
  • 举报
回复
select count(userid) from His_Section where userid>=100 在列 userid 上加索引
Tiger_Zhao 2014-10-29
  • 打赏
  • 举报
回复
给 userid 单独建索引,或者 userid 是某个复合索引的第一列。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧