繁体   English   中英

在哪种情况下不能使用临时表重写INNER JOIN(SELECT ...

[英]In which cases can INNER JOIN (SELECT … not be rewritten using temp table

我正在使用GridSQL,每当SQL模式INNER JOIN(出现SELECT时,我都会遇到一些性能问题。因此,我正在考虑将所有这些查询重写为两个查询,一个使用精确的select语句创建一个临时表,另一个查询与临时表连接表,因此模式将改为INNER JOIN temp_table(...)。

在什么情况下不行? 您可能会怀疑,我希望对此问题没有任何答案。 ;)

子选择唯一无法轻易拆分为临时表的时间是它引用外部表中的字段时。

对于“ ... INNER JOIN(SELECT ...)”,我怀疑您是否会遇到该问题(或者,即使有可能,我也不记得尝试过此问题),因为您应该只引用第一个表中的字段连接条件。

我认为临时表不会加快您的查询速度! 相反,您应该优化查询。 您可以做的事情:

  • 在将记录与其他记录集进行内部联接之前对其进行过滤
  • 定义适当的索引

-Pavel

在哪种情况下不能使用临时表重写INNER JOIN(SELECT ...

如果用临时表替换的查询会导致庞大的结果集,那么我将避免使用临时表。 产生它的开销将抵消任何可能的收益。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM