Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database Google bigQuery中的查询工作很慢_Database_Search_Google Bigquery - Fatal编程技术网

Database Google bigQuery中的查询工作很慢

Database Google bigQuery中的查询工作很慢,database,search,google-bigquery,Database,Search,Google Bigquery,我有一个包含近一百万行的表。在其中搜索单个值需要5秒,15秒内大约500秒。这是相当长的一段时间。请让我知道如何优化查询 我的问题是: select a,b,c,d from table where a in ('a1','a2') Job id:stable-apogee-119006:Job_clldiuddlyya6tc2jfc5gxbxmv0我不确定你说的“500需要15秒”是什么意思,但我对我们的数据库运行了一些测试,试图模拟你正在运行的东西,我得到了一些与你类似的结果 (我的查询比

我有一个包含近一百万行的表。在其中搜索单个值需要5秒,15秒内大约500秒。这是相当长的一段时间。请让我知道如何优化查询

我的问题是:

select a,b,c,d from table where a in ('a1','a2')

Job id:stable-apogee-119006:Job_clldiuddlyya6tc2jfc5gxbxmv0

我不确定你说的“500需要15秒”是什么意思,但我对我们的数据库运行了一些测试,试图模拟你正在运行的东西,我得到了一些与你类似的结果

(我的查询比你的查询慢,因为它有一个
join
操作,但我们还是这样做了):

只查询一天,只带来一个完整的访客,BQ大约花了5秒来处理1.7Gbs

当我在上个月运行相同的查询并删除
limit
操作符时,处理56GB数据(大约3300万行)需要10秒:

这是疯狂的快

因此,您可能需要评估您的项目规格。如果5秒对您来说仍然太多,那么您可能需要在您的体系结构中找到最适合您的其他策略

BigQuery确实需要几秒钟来处理其需求,但它也可以在几秒钟内处理数百GB的数据

如果您的项目数据消耗预计将增长,并且您将开始处理数百万行,那么您可能会评估在应用程序中等待几秒钟是否仍然可以接受

除此之外,就您的查询而言,我认为没有多少优化可以改善其性能


(注:我决定运行100天,它在14秒内处理了大约100 GB的数据。)

为什么投票被否决?有关于如何优化的答案吗?请阅读以下内容:。帮助他人通过提供您试图运行的查询来帮助您。对于BigQuery工程师来说,拥有过去一些查询的作业ID可能也会有所帮助。感谢您添加作业ID。除非有人比我强,否则我将在明天早上(太平洋时间)查看。您在查询中使用了哪种billingTier?您使用的是传统SQL还是标准SQL?你的桌子有分区吗?Bigquery是用于TB级的bigdata工具,所以不要期望答案小于3秒,即使是小数据也不会有答案。但是对于海量数据来说,它将非常快。根据时间或任何其他字段划分表?不,我们只有一张10行的桌子。
SELECT
  a.fv fv,
  a.v v,
  a.sku sku,
  a.pp pp from(
  SELECT
    fullvisitorid fv,
    visitid v,
    hits.product.productsku sku,
    hits.page.pagepath pp
  FROM (TABLE_DATE_RANGE([40663402.ga_sessions_], DATE_ADD(CURRENT_DATE(), -3, 'day'), DATE_ADD(CURRENT_DATE(), -3, 'day')))
  WHERE
    1 = 1 ) a
JOIN EACH (
  SELECT
    fullvisitorid fv,
  FROM (TABLE_DATE_RANGE([40663402.ga_sessions_], DATE_ADD(CURRENT_DATE(), -3, 'day'), DATE_ADD(CURRENT_DATE(), -3, 'day')))
  GROUP EACH BY
    fv
  LIMIT
    1 ) b
ON
  a.fv = b.fv