1.分区过滤
- 分区过滤什么什么意思:如果不加分区,默认会扫描整个表的数据
- 分区用什么来描述:一般有时间,如year,month,day,hour,当正常表的字段使用
- 怎么知道一个表是否有分区
- 看表的字段是否有类似“month,day,hour”这样的字段
- show partitions databaseName.tableName
- 怎么知道加的分区是否有效
- 执行的sql会有日志,如果map个数感觉比较多,分区过滤放置的位置可能不对
- EXPLAIN AUTHORIZATION query
2.分区的使用
-
普通查询,分区过滤放在where后面,如
说明:
- var between 'a' and 'b'意思是var>='a' and var<='b'
- var between 'a' and 'b'意思是var>='a' and var<='b'
-
inner join,分区过滤放在where后面,如
说明:
- a join b 两个表都需要过滤条件,如果只写一个只会过滤对应的表
-
left join,左边表的分区过滤放在where后面,右边表分区过滤放在on后面,如
说明:
- right join相反
- 参考
3.查看sql依赖的表和分区
- 使用explain dependency sql
- 除了分区条件的放置之外其他的条件也类似,如t2.`order_type`='3'放置在where后面则是在join之后进行过滤,放在on后面则是在join之前过滤