记得这是曾经面阿里的一个面试题,数据量亿级别的数据,提升查询效率怎么去处理?
这里不讲什么导ES,导Hbase之类的, 只通过mysql来处理,这时候会用到分区表;
分区表怎么个意思呢? 跟hive里面的partition类似,但是功能没有hive强大,有很多限制,mysql 5.01后开始支持,创建分区表后,使用show create table查看,可以看到限制,5.01后才开始支持;
在业务里面很少用到分区表,这里简单记录一下使用:
创建分区表:
插入数据,分布有各个时间段的,每个时间段2条记录;
这时通过explain去查询,查询的时候已经用到分区了,扫描的不是全表的数据:
查看分区的数据:
mysql> SELECT PARTITION_NAME,TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME = 'by_year' and TABLE_SCHEMA='db_name';
+----------------+------------+
| PARTITION_NAME | TABLE_ROWS |
+----------------+------------+
| P1 | 2 |
| P2 | 2 |
| P3 | 2 |