标准答案:
declare @ACount int
select @ACount=count() from 表 --计算总数,避免放在大数据的select中影响效率
if @ACount>0 --判断是否有记录,无记录时@Acount为0,不能做除数
select 表name,cast(count() as numeric(10,3))/cast(@ACount as numeric(10,3)) from 表 group by 表name --做百分比时要避免直接用/,会整除的,就无法判断%比例了。
else
select '表中无记录,无法统计比例'
--小数点后保留三位,换算成%比,应该如125%的精确度,numeric(10,3)前面的10如果长度不够可以根据需要修改
这么大的表优化是很痛苦的,看你对数据的用途,如果不经常查询、而是频繁的增加,可以考虑定期(每周或者每日)把表中的数据复制到历史表中,清空工作表的数据,这样插入的效率能大大提高,但是查询的时候需要在两个表中进行查询。用于频繁插入数据的工作表要尽量少建索引,用于查询的历史表要多建索引。
当前做分布式的厂商有几家,我知道比较出名的有“华为云分布式数据库DDM”和“阿里云分布式数据库”,感兴趣可以自行搜素了解下。
分布式数据库的几点概念可以了解一下。
数据分库:
以表为单位,把原有数据库切分成多个数据库。切分后不同的表存储在不同的数据库上。
以表中的数据行记录为单位,把原有逻辑数据库切分成多个物理数据库分片,表数据记录分布存储在各个分片上。
路由分发:
在分布式数据库中,路由的作用即将SQL语句进行解析,并转发到正确的分片上,保证SQL执行后得到正确的结果,并且节约QPS资源。
读写分离:
数据库中对计算和缓存资源消耗较多的往往是密集或复杂的SQL查询。当系统资源被查询语句消耗,反过来会影响数据写入 *** 作,进而导致数据库整体性能下降,响应缓慢。因此,当数据库CPU和内存资源占用居高不下,且读写比例较高时,可以为数据库添加只读数据库。
我理解你问的是硬件,一般思路: 1选平台:windows,linux还是unix 2挑主机:哪个厂商,什么样的性能要求(TPCC,TPCH),什么样的RAS要求,什么特殊要求如分区、虚拟化等 3搭架构:这个和你自身的应用以及选的数据库有关,比如oracle数据库,是单机单实例还是RAC或者其他方式 4配存储:I/O常常是数据库的瓶颈,要配合适的存储才能发挥服务器性能 当然理论设计还要看实际预算,暂时想到的,供你参考蓝屏
以上就是关于SQLSERVER数据库求每列不同数据所占百分比全部的内容,包括:SQLSERVER数据库求每列不同数据所占百分比、Mysql单表太大,性能受影响求指点、php mysql分布式数据库如何实现等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)