我在一个包含5亿行的表中有9列,我将在其中执行SELECT查询,所有列可能在WHERE或GROUP BY中,也可能不在其中。
例如: Columns -> (A, B, C, D, E, F, I, J, K) query ->
SELECT *
FROM table WHERE A = 'x' AND J = 'y' GROUP BY B, E, K索引和优化数据库的最佳方法是什么?我必须为每个列的排列执行多列索引(复合索引)吗?
对于3列,我知道我可以做:(a,b,c),(b,c),( c),(a,c),但是9列呢?
发布于 2020-01-24 06:26:06
你不能达到预期的目标。一些可能的替代方案:
发布于 2020-01-23 02:14:30
首先,group by不适合使用select *。幸运的是,MySQL不再允许这种语法(默认情况下)。
如果您打算:
SELECT B, E, K
FROM table
WHERE A = 'x' AND J = 'y'
GROUP BY B, E, K;最好的索引是在(A, J, B, E, K)上;
https://stackoverflow.com/questions/59865554
复制相似问题