我有一个4个表的联接查询,当我执行时不带“ where”需要13秒,而where则需要8分钟。
当您使用过滤条件来提高查询性能时,我不知道该怎么办
SELECT distinct tb_ProdutoComercial.nm_prodcomerc as tx_nome,
tb_parceiro.id_prodcomerc_pr as id_produto
FROM tb_vendedor
left join tb_tokenidparc
on tb_vendedor.nu_cdVendedorS4E = tb_tokenidparc.nu_cdVendedor4E_tk
left join tb_parceiro
on tb_tokenidparc.nu_cdCorretoraS4E_tk = tb_parceiro.id_corretora_pr
left join tb_ProdutoComercial
on tb_ProdutoComercial.id_prodcomerc = tb_parceiro.id_prodcomerc_pr
where tb_ProdutoComercial.en_status = '1'
EXPLAIN With Where EXPLAIN Without Where
我正在寻找性能相同但不在哪里的东西
答案 0 :(得分:1)
在连接左侧的表时,您也要对其进行过滤,这就是需要花费大量时间的原因。 实际上,根据该查询,正在运行5个查询。
答案 1 :(得分:0)
这运行得更好吗?
SELECT distinct tb_ProdutoComercial.nm_prodcomerc as tx_nome
,tb_parceiro.id_prodcomerc_pr as id_produto
FROM tb_vendedor
left join tb_tokenidparc on tb_vendedor.nu_cdVendedorS4E = tb_tokenidparc.nu_cdVendedor4E_tk
left join tb_parceiro on tb_tokenidparc.nu_cdCorretoraS4E_tk = tb_parceiro.id_corretora_pr
left join (select * from tb_ProdutoComercial where en_status='1') tb_ProdutoComercial on tb_ProdutoComercial.id_prodcomerc = tb_parceiro.id_prodcomerc_pr