BigQuery是否有基于规则的或基于成本的优化器或其他?

时间:2019-03-25 20:19:44

标签: google-bigquery

我很好奇它使用哪种类型的优化器,以便可以优化数据库和查询以使其适合。

我知道基于成本的目的是确定执行SQL语句的最有效方法,但是如果没有关于所访问数据的最新的统计信息,就无法做到这一点。使用基于成本的方法,优化器因素是有关正在访问的特定模式对象(表,集群或索引)的内容的统计信息。

基于规则的优化器是一种没有统计信息的方法,但是这种方法比基于成本的方法更不明智。使用基于规则的方法,优化器根据一组规则选择执行计划,该规则确定哪些类型的操作通常比其他类型的操作执行得更快。

我相信它是基于成本的,但是我不确定。谁能为我提供更多有关为什么可能是另一个的信息? 谢谢!

1 个答案:

答案 0 :(得分:0)

BigQuery中没有自动规则来节省成本。最好的方法是遵循BigQuery best practices: Controlling costs

请在下面查看一些我认为非常有用的规则:

规则1

  

避免SELECT *
  最佳做法:仅查询所需的列。

规则2

  

使用预览选项采样数据
  最佳做法:不要运行查询来浏览或预览表数据。

规则3

  

在运行查询之前为查询定价
  最佳做法:在运行查询之前,先预览它们以估算费用。

规则4

  

通过限制计费字节数来限制查询费用
  最佳做法:使用“最大字节收费”设置来限制查询费用。

规则5

  

按日期划分的分区数据
  最佳做法:按日期对表进行分区。