【发布时间】:2017-07-03 20:32:51
【问题描述】:
我在下面有一个查询,它从 3 个表中检索数据。
select *
from vendor_allocation as va, district as d, vendor as v
where va.district_id = d.id and va.vendor_id = v.id
结果中有很多空列,执行大约需要 315 毫秒。我需要省略空列并更快地执行查询。我尝试使用 COALESCE,但得到了预期的结果。请帮忙。
【问题讨论】:
-
从不在
FROM子句中使用逗号。 始终使用正确、明确的JOIN语法。 -
另外,您的预期结果是什么?所有供应商的列表,附有地区?
-
要“省略”列,不要将它们放在选择列表中。为什么
select *不应该在生产查询中使用的另一个很好的例子。 -
select *返回所有列。通过列出它们来定义要返回的列(例如select somecolumn, someothercolumn, jcwashere from somekindatable -
我必须在@GordonLinoff 的评论中添加一句话:使用逗号您可以执行
cross join即Cartesian Product。来自vendot_allocation的每一行与district的每一行组合,然后与vendor组合。这会产生大量的meaningless数据
标签: sql postgresql