• J: attributes that appear in JOIN conditions.
• EQ: attributes that appear in EQUAL conditions.
• RANGE: attributes that appear in RANGE conditions.
• O: attributes that appear in GROUP BY, ORDER BY clauses.
• USED: attributes that appear in this query.
JOIN:JOIN子句用语将来自两个或者多个表的行结合起来,在实际的数据库的应用中经常需要从多个数据表中进行数据的读取,这时候就可以使用SQL语句中的连接(JOIN)子句进行操作,在多个数据表中进行数据的查询。
JOIN有三种连接,
(1)内连接,等值连接:INNER JOIN
(2)左连接:LEFT JOIN
(3)右连接:RIGHT JOIN
Equal:
实例:
Range:
(1)range分区,根据分区键值的范围对数据行存储到表的不同分区中,多个分区的范围要连续但是不能重叠,默认情况下使用values less than的属性,即每个分区不包含设置的哪个值,上限是取不到的。
(2)使用场景:分区键是日期或者时间
(3)分区注意的事项:
具有主键或者唯一索引的表,主键或者唯一索引必须是分区键的一部分
对分区表进行查询,最好在where从句中包含分区键
结合业务场景选择分区键,避免分区查询。
partition by RANGE(YEAR(login_time))
(
partition p0 values less than(2014),
partition p1 values less than(2015),
partition p2 values less than(2017)
)
GROUP BY:
groupby,也就是根据by指定的规则对数据进行分组,而所谓的分组就是将一个数据集划分成若干个小区域,然后对这若干个小区域进行数据处理。
实例:
简单的GROUP BY:
select 类别,sum(数量)as 数量之和
from A
group by 类别
返回的结果如下:(也就是根据group by 将数据分成了小块,然后进行求和)
select 类别, sum(数量) AS 数量之和 from A group by 类别 order by sum(数量) desc
结果如下,order by就是对by的这个属性进行了排序。
select 类别, sum(数量) as 数量之和, 摘要 from A group by 类别 order by 类别 desc
上述的操作是不行的,因为select指定的字段
(1)要么包含在Group by语句的后面,作为分组的依据。
(2)要么被包含在聚合函数中。
也就是说group by语句中select指定的字段必须是“分组依据字段”,其他的字段如果想出现在select中则必须包含在聚合函数中。
select 类别, 摘要, sum(数量) as 数量之和 from A group by all 类别, 摘要
会将这两个进行合并,求和数量。
以上转自:SQL中Group By的使用 - 静风铃 - 博客园 (cnblogs.com)
ORDER BY:
ORDER BY 语句用于根据指定的列对结果集进行排序。
ORDER BY 语句默认按照升序对记录进行排序。
如果希望按照降序对记录进行排序,可以使用 DESC 关键字。