通过查询Azure SQL数据库故事时强制创建顶点来优化U-SQL

时间:2018-08-20 09:38:00

标签: azure azure-sql-database azure-data-lake u-sql

我正在从Azure数据湖分析中查询Azure SQL数据库中的表,并且遇到效率低下的查询。 查询很简单,全部为SELECT * FROM EXTERNAL Datasource EXECUTE @"SELECT *FROM externalTable。该表包含超过6000万行。 挑战在于,在执行u-sql脚本以检索所有这6000万行时,u-sql仅将这些操作拆分为一个顶点,从而无法扩展工作。 如果将查询分为X个其他“零件查询”,在每个零件查询中检索一部分总行,然后在末尾组合所有零件查询,则显然会得到X个顶点。 演示“部分查询”:

       SELECT * FROM EXTERNAL Datasource EXECUTE @"SELECT *FROM externalTable 
  where registered >= GETDATE()-10000 and Registered !> GETDATE()-8000
    union all
     SELECT * FROM EXTERNAL Datasource EXECUTE @"SELECT *FROM externalTable where registered >= GETDATE()-7999 and Registered !> GETDATE()-6000

我的问题是,这是有效查询外部数据源的首选方法,还是我错过了一些东西?

1 个答案:

答案 0 :(得分:0)

尝试将参与跨数据库查询的SQL Azure数据库服务器和Data Lake资源放在同一区域中,以提高性能。

您还可以通过在Azure SQL数据库端参数化弹性查询来批量检索所有这些数百万条记录。可以将参数化的操作推送到远程数据库,并在Azure数据湖侧进行远程评估。进一步了解here