我在_job_id__和__keyword_id__上有一个带有多列UNIQUE索引的表.
如果我有频繁的查询在该列上执行GROUP BY,是否还需要向__job_id__添加另一个索引?
(1亿行可能需要一段时间.这就是为什么我要求而不只是做)
解决方法:
一点都不 !!!如果所需的主列在索引中最左边,MySQL Query Optimizer将做正确的事情.如果您确实创建了这样的索引,那么如果您始终执行GROUP BY job_id,keyword_id,则MySQL查询优化器可能选择永远不会使用该索引.如果您只通过job_id收集记录,MySQL Query Optimizer可能会也可能不会使用索引,但是无论如何您都有冗余索引浪费空间.
如果该表是MyISAM,那么制作这样的索引只会使MYI文件膨胀.
如果表是InnoDB且innodb_file_per_table为0,那么制作这样的索引只会使ibdata1膨胀.
如果表是InnoDB且innodb_file_per_table为1,那么创建这样的索引只会使表的.ibd文件膨胀.
总之,您不需要制作额外的索引!
标签:mysql,index
来源: https://codeday.me/bug/20190805/1589236.html