MySQL查询 - 更好的性能和更具体的JOIN?

时间:2016-10-25 17:04:02

标签: mysql performance join

我正在编写一个MySQL查询,我有一个疑问:这些代码(下面)哪个更快?我想如果我在“左连接”(第二个代码)中更具体,它应该更快。这种方法是否正确?

curl -s "url" -H "api" | python - c "import sys, json; print;(json.load(sys.stdin)['download_url']);"

OR


services.AddSingleton<HtmlEncoder>(
  HtmlEncoder.Create(allowedRanges: new[] { UnicodeRanges.BasicLatin,
                                            UnicodeRanges.Arabic }));

3 个答案:

答案 0 :(得分:2)

如果该字段已编入索引, 通常没有太大区别,因为查询优化器会看到您正在查找{{1}中的单个值}(或medicoprocedimento.medicoid)列。因此,即使您只有medicos.id子句中的过滤器,它通常在此值之前对执行索引搜索/扫描直接在where

也就是说,您应该始终检查执行计划,以确定在您做出选择之前已完成此优化。在运行查询时无法替代实际发生的事情

答案 1 :(得分:0)

您可以使用EXPLAIN来了解哪一个更快,但您的示例应该相同。

答案 2 :(得分:0)

添加Slimns所说的查询可以简化

SELECT  m.*, p.nome AS nomeprocedimento
FROM medicos AS m
    INNER JOIN medicoprocedimento AS mp 
            ON m.id = mp.medicoid 
           AND m.id = 123
    LEFT JOIN procedimentos AS p ON mp.procedimentoid = p.id

我打赌第二个LEFT JOIN也可以替换为INNER JOIN