社区
应用实例
帖子详情
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
打赏
收藏
SQL 语句Count(*)如何优化
select count(*) from His_Section where userid>=100 表中有3000多万数据,查询要16秒才有结果。 求高手指点如何优化,或者用系统存储过程或者函数代替什么的都可以 EXEC SP_SPACEUSED 'His_Section' 这样效率很高,但是不能加筛选条件
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Q315054403
2014-10-30
打赏
举报
回复
简单的在USER_ID上建个索引(既然已有PK、CLUSTER) 要么从设计上解决,就稍麻烦点了
吉普赛的歌
2014-10-29
打赏
举报
回复
按历史记录水平分表或者按功能性垂直分表吧
专注or全面
2014-10-29
打赏
举报
回复
这个问题能否“逃避”开来? 一般来说,人们对于数据,关心的更多的是内容, 就比如我去淘宝上搜索瓜子,我关系的是瓜子本身,而不是有多少条瓜子的信息 另外,这么大的数据量,关系多少条数,应该不是侧重点,比如1999999条数据和2000001条数据,这个意义不大吧 另外就想京东的ipad客户端那样,只要往下拉,他就不断地显示,关注于内容本身,连神马下一页下一页的就免了 算了,回了跟没回一样
阳泉酒家小当家
2014-10-29
打赏
举报
回复
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 是某个复合索引的第一列。
SQL
COUNT
(*) 函数
COUNT
(*) 函数返回在给定的选择中被选的行数。 语法 SELECT
COUNT
(*) FROM table 例子 Name Age Adams, John 38 Bush, George 33 Carter, Thomas 18 例子 1 本例返回 "Persons" 表中的行数: SELECT
COUNT
(*) FROM Persons 结果: 3 例子 2 返回大于 20 岁的人数: SELECT
COUNT
(*) FROM Persons WHERE Age>20 结果: 2 ..
sql
语句
中
count
(1)和
count
(*)有什么区别
sql
语句
中
count
(1)和
count
(*)有什么区别
SQL
语句
中
count
(1)与
count
(*)
count
(*) 可以统计所有的行数,包括为null的行
count
(1) 统计的是第一个子字段的行数,为null的行数 不统计。
sql
语句
中的
count
(*)和
count
(列表)的用法
count
(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL
count
(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不是只空字符串或者0,而是表示null)的计数,即某个字段值为NULL时,不统计
SQL
-
count
(*)和
count
(id)有啥区别
简单点,直接跑
sql
语句
就能发现区别 employee表: 使用
count
(*)和
count
(id)跑一下看看有啥区别 SELECT
COUNT
(employee_id) AS '
count
(id)' ,
COUNT
(employee_name) AS '
count
(name)' ,
COUNT
(employee_age) AS '
count
(age)' ,
COUNT
(*) '
count
(*)' FROM employee; 在结合一下原始表,可以的分析得到结论: 总结下:
count
( * )
应用实例
27,579
社区成员
68,558
社区内容
发帖
与我相关
我的任务
应用实例
MS-SQL Server 应用实例
复制链接
扫一扫
分享
社区描述
MS-SQL Server 应用实例
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章