我的专栏是:
job_name, job_date, job_details1, job_details2 ...
没有主键列
在我的表中,我希望有15-20个不同的工作。每个作业只有2个月的数据,因此每job_date
个job_name
60个不同100,000
。在每个日期内都会有job_name
条记录。
查询将永远是一个特定job_date
的选择和job_date
的范围(后面跟几个分组,但现在这是无关紧要的)。在查询特定job_name
和某些job_name
范围时,我不希望查询通过不相关的job_date
或job_name
。
那么我可以做些什么样的优化来使我的选择查询更快?我正在使用MySQL5.6.17,它的分区限制为8096个分区。
对于job_date
内的{{1}}分区和{{1}}内的分区,有什么用?这是我第一次处理这么大的数据,所以我不确定这些优化。任何帮助或提示将不胜感激。
由于
答案 0 :(得分:0)
“查询将永远是一个特定job_name的SELECT和一系列job_date(后面跟着几个group by,但这与现在无关)。” - 基于此,你需要
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
PRIMARY KEY(job_name, job_date, id),
INDEX(id)
ENGINE=InnoDB
注意:
AUTO_INCREMENT
并将其添加到PK,因为PK 必须是唯一的。 (并且聚类需要PK。)INDEX(id)
(或某些关键以id
开头)AUTO_INCREMENT
需要。
“......其次是分组...”这听起来像是在汇总报告数据?如果我上面的建议不够快,那就谈谈Summary Tables。你可能会得到另一个10加速因子。