MySQL分割数据
引言一般来说讲,提到数据拆分,可以归结为两个层面:一是垂直拆分,二是水平拆分。这里我们来讨论下垂直拆分。垂直拆分是以数据库、表、列等为单位进行拆分的方法。正文MySQL里垂直拆分可以细分为:垂直拆库(...
2024.11.15问题描述
有一个信息表info,他的u_id是关联的用户的id,他的m_id是关联的电话的id,每打一次电话就新增一条记录,m_id=10表示是公司外部人员拨打。(还可能细分到m_id 10 的值为1,因此,第二行中的数字代表公司外部人员拨打的电话数量
优缺点
缺点是显而易见的,由于使用了条件表达式作为分组依据,它只能做二元的划分,对于要分成多类进行统计的情况不能够胜任。比如要分别统计电话id在1~5、5~10,10~15的数量就无法实现了。
另外,由于使用了GROUP BY,因此涉及到排序,执行时间上要更长。
方法2:使用嵌套的select使用嵌套的select也可以达到目的,在每个select子句中统计一个条件下的数据,然后用一个主select把这些统计数据整合起来。
优缺点
优点就是直观,而且速度也比GROUP BY要快。虽然是3条select语句,看起来比GROUP BY的方案多了2条语句,但是它不涉及到排序,这就节省了很多时间。
缺点可能就是语句稍多。
方法3:使用CASE WHEN这里的COUNT和CASE WHEN联合使用,做到了分类计数。先使用CASE WHEN,当满足条件时,将字段值设置为 1, 不满足条件时,将字段值设置为NULL,接着COUNT函数仅对非NULL字段进行计数。
引言一般来说讲,提到数据拆分,可以归结为两个层面:一是垂直拆分,二是水平拆分。这里我们来讨论下垂直拆分。垂直拆分是以数据库、表、列等为单位进行拆分的方法。正文MySQL里垂直拆分可以细分为:垂直拆库(...
2024.11.15分表MySQL 的分表是真正的分表,一张表分成很多表后,每一个小表都是完整的一张表,都对应三个文件,一个.MYD数据文件,.MYI索引文件,.frm表结构文件。分区一张大表进行分区后,它还是一张表,不...
2024.11.15聚簇索引就是innodb默认创建的基于主键的索引结构,而且表里的数据就是直接放在聚簇索引里,作为叶节点的数据页:基于主键的数据搜索:从聚簇索引的根节点开始进行二分查找,一路找到对应数据页,基于页目录就...
2024.11.15在 MySQL 中,COUNT() 函数用于统计满足特定条件的记录数。COUNT() 是一个聚合函数,它返回一组记录中的行数。你可以使用 COUNT() 函数计算表中的行数、满足某个条件的行数或者具有...
2024.11.15概述分享一下mysql常用的一些统计语句,仅供参考。常用统计语句1、查询指定SQL的trace信息mysql -uroot -p -e "\use lcpdb1; \set session optim...
2024.11.13