Man*_*-kr 2 mysql indexing partition
我有一个包含时间信息的表,所以该表包含年、月、日、小时等列。
表有跨年的数据而且相当大,所以我决定在这个表上进行分区并开始学习 Mysql 分区,但遇到了一些问题。
如果有人能帮助我了解分区和索引将如何协同工作,我将不胜感激。
前任。查询:Select month, day, hour ... from time_table where year = '2017';
例子: Select year, month, day .... from time_table where month = '05';
分区将一个表分成,我们可以说,“子表”。每个子表本质上都是一个表,带有数据和索引。
当SELECTing从表中,所做的第一件事是决定哪些分区(一个或多个)可以包含所需的数据。这是“分区修剪”并使用“分区键”(显然是year)。然后选择应用于相关的子表,使用任何合适的索引。在那种情况下,拥有 是一种浪费INDEX(year, ...),因为您已经被修剪到了年份。
您的样本选择无法进行分区修剪,因为您没有year在WHERE子句中指定。因此,它将在所有分区中查找,并且比没有对 table 进行分区时要慢。
YEAR(date),MONTH(date)等等。month='05')如果您想备份一个步骤并解释您要完成的任务,也许我们可以讨论另一种方法。
| 归档时间: |
|
| 查看次数: |
5296 次 |
| 最近记录: |