SQL计划方差科学记数法

时间:2018-06-15 14:29:04

标签: sql-server powerbi powerquery db2-400

我正在处理三件式数据路径:客户端应用程序,主机集成服务器,数据库服务器。客户端应用程序(MS Mashup Engine)生成的查询通过MS SQL Server传递到旧的IBM iSeries DB后端。

我遇到客户端正在生成

等查询的问题
select * from x where numericValue = 1.46510+003

我在SQL Server上检查这些执行计划,它们会导致完整的数据加载,并在SQL Server(充当主机集成服务器)上进行比较。

相比之下,人类生成的查询

select * from x where numericValue = 1465.1

导致无扫描和性能提高两个数量级。

我尝试过使用客户端应用程序强制它生成类似人工生成的查询,但我没有运气。

我不确定是否可以通过播放列数据类型来按照SQL Server中生成查询计划的方式。即使用显式定义的数据类型公开后端DB上的视图。或以其他方式强制生成查询计划?

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我不确定是否可以通过处理列数据类型来完善SQL Server中查询计划的生成方式。即在后端数据库上公开具有明确定义的数据类型的视图。还是以其他方式强制生成查询计划?

否,使用以下所有选项均不能回答问题:

  • 在传递给电源查询/电源bi之前的广播类型不会改变
  • 为DB2OLEDB或IBMDASQL设置的适配器属性(例如,十进制为Numeric = True;派生参数= True;等...)无效
  • 在数据上创建存储过程需要功率查询中的参数化,这很好,但不与ui集成。即-使用参数字段而不是列过滤器是不干净的。

TBH,随着后端性能的提高和可用的前端缓存,这已成为越来越少的问题。

希望有帮助, -亚历克斯T。