我有一个表,UNIQUE
在_job_id__
和上有一个多列索引__keyword_id__
。
__job_id__
如果我有一个GROUP BY
对该列执行 a 的频繁查询,我还需要添加另一个索引吗?
(在 1 亿行时可能需要一段时间。这就是为什么我要问而不仅仅是做)
一点都不 !!!如果所需的主列位于索引的最左侧,MySQL 查询优化器将执行正确的操作。如果您确实创建了这样的索引,并且您始终执行 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 文件膨胀。
总之,您不需要制作额外的索引!!!
归档时间: |
|
查看次数: |
1582 次 |
最近记录: |