根据实际应用场景划分,SQL语句可分为统计类、查询类、更新类等不同类型。在语句设计中,核心关注点是优化执行效率,旨在降低语句执行耗时,并最小化对CPU、内存、I/O以及网络带宽等资源的消耗。为提高效率,通常采用一系列手段,包括充分利用索引、缩小操作粒度、简化操作复杂度等。下面我们先来看一下统计类语句的注意事项。
count()的不同用法:
count(*): 对应用优化,仅进行行累加,不取全部字段值,无论是否包含null。
count(主键id): 对InnoDB引擎而言,遍历整张表取出每行id值,由于主键不为空,按行累加。
count(1): InnoDB引擎遍历整张表,不取值,但对于每一行返回填充数字1,实际按行累加。
count(字段): 如果字段定义为not null,实际按行累加;如果允许为null,额外判断只累加非null的行。
count(distinct col): 计算该列除null之外的不重复数量,例如,count(distinct col1, col2)。
注意:
sum()的用法:
group by的使用:
基本规则:
select point, count(id) from t_table group by point
,point列未使用聚合函数,必须在group by子句中出现。与order by的结合使用:
SQL语句根据应用场景可划分为统计、查询、更新等类型,着重在设计中优化执行效率,降低耗时及资源消耗。采用手段包括索引充分利用、操作粒度缩小、复杂度简化。在统计类语句中,count()有多用法,推荐优先使用count(*)。sum()需注意空指针异常。group by与order by联合使用时,遵循列出现规则。这些注意事项有助于提高SQL查询效率。