我试图提高连接两个表的某些查询的性能,我已经为表gio_A_Master_SL_temp和一个名为skuconf的索引添加了一个名为skuconf的索引,用于将colum SKUConfig添加到表中在表gio_cat_hist_SL_temp列sku_config,但我可以通过解释命令来查看未在表(仅在创建派生表)未在连接mysql中使用索引
这里联合使用的指标是查询
EXPLAIN SELECT
a.Country,
a.MonthNum,
a.CatBP,
a.Cat1,
a.Cat2,
a.Cat3,
sum(a.SKU_sold) as SKU_sold,
sum(a.items) AS items,
sum(a.Revenue) AS revenue,
sum(b.SKU_visible) AS SKU_visible
FROM
(SELECT
Country,
MonthNum,
SKUConfig,
CatBP,
Cat1,
Cat2,
Cat3,
count(DISTINCT SKUConfig) AS SKU_sold,
sum(OrderAfterCan) AS items,
sum(NMV) AS Revenue
FROM
gio_A_Master_SL_temp
GROUP BY
SKUConfig) a
LEFT JOIN
(SELECT
sku_config,
count(*) AS SKU_Visible
FROM
gio_cat_hist_SL_temp
GROUP BY
sku_config) b ON a.SKUConfig = b.sku_config
GROUP BY a.CatBP, a.Cat1, a.Cat2, a.Cat3
;
这里是一个说明结果图像
列我加了索引的类型为VARCHAR(28),且二者具有由SHOW FULL COLUMN命令相同的排序规则显示
SKUconfig varchar(28) utf8_general_ci YES MUL select,insert,update,references
sku_config varchar(28) utf8_general_ci YES MUL select,insert,update,references
我不知道whay的索引没有被连接使用,有没有什么办法可以使索引为表的联合工作?此外,任何改善查询的建议都非常受欢迎。提前致谢。
有多大的表?使用索引然后查找会产生成本,所以有时候只需进行全面扫描便宜。你还没有加入索引表。你正在用'group by'创建一个临时表。 –
@JuanCarlosOropeza即使没有'group by',subquerying可能会消除'join'中考虑的索引(尽管它们可能有助于分离出'group by's。 – Uueerdo
@Uererdo这就是我在提到临时表时所说的,isnt? –