SQL 计划方差科学计数法

SQL Plan variance scientific notation

我正在处理三部分数据路径:客户端应用程序、主机集成服务器、数据库服务器。客户端应用程序(MS Mashup 引擎)正在生成通过 MS SQL 服务器传递到遗留 IBM iSeries 数据库后端的查询。

我 运行 遇到客户端生成查询的问题,例如

select * from x where numericValue = 1.46510+003

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

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

select * from x where numericValue = 1465.1

无需扫描,性能提高两个数量级。

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

我不确定是否可以通过使用列数据类型来改变 SQL 服务器中查询计划的生成方式。 IE。使用明确定义的数据类型公开后端数据库的视图。或者强制生成查询计划?

有什么想法吗?

我不确定我是否可以通过使用列数据类型来调整在 SQL 服务器中生成查询计划的方式。 IE。使用明确定义的数据类型公开后端数据库的视图。或者强制生成查询计划?

否,答案是否定的:

  • 在交付权力之前铸造类型query/power bi 没有改变
  • 为 DB2OLEDB 或 IBMDASQL 设置的适配器属性(f.ex。Decimal As Numeric=True;Derive Parameters=True;等...)无效
  • 根据数据请求创建存储过程ui在 power query 中进行 res 参数化这很好,但没有与 ui 集成。 IE。 - 使用参数字段而不是列过滤器是不干净的。

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

希望对您有所帮助, -Alex T.