0

我正在使用带有 ColdFusion 2016 的 Azure 中的数据库。我正在使用来自(有关如何配置它的有用链接:link1 link2 )的Sqljdbc41.jar这是我的查询。[uuid] 上有一个索引,它是 varchar(36),pkIdentity 是一个主键 int。

select pkIdentity
from tbl1
where [uuid] = <cfqueryparam cfsqltype="cf_sql_varchar" value="#attributes.uuid#" maxlength="36">

此查询使用 Azure 中的最多 DTU。Coldfusion 将其发送到 Azure

(@P0 nvarchar(4000))select pkIdentity
from tbl1
where [uuid]= @P0

我读过 jdbc 驱动程序上的设置在将varchar 数据类型传递给 Azure SQL 时可能会将其转换为 varchar 。但是,我在 CF 数据库设置屏幕中没有禁用转换为 nvarchar 的选项。

我认为这些是我的选择。你认为哪个更好?

  1. 当您使用 cfqueryparam 但指定正确的数据类型(使用 sp_prepexec ?)时,尝试逆向工程冷融合正在做什么
  2. 完全删除 cfqueryparam 的使用,并在将其硬编码到查询中之前验证该字符串是有效的 uuid(例如 where [uuid] = '#attributes.uuid#'),但我担心我会失去对所有执行的可见性此查询在 Azure SQL Performance Insight 工具中组合在一起
4

1 回答 1

0

非常感谢@BernhardDöbler 对我需要的参数进行评论,以纠正数据源始终以 Unicode 格式转换参数的问题。需要添加到 JDBC URL 的参数是 sendStringParametersAsUnicode=false (具有讽刺意味的是,我首先从他的评论中复制了它并将其添加到设置中,但它不起作用,因为在几个字母之间嵌入了一些奇怪的字符。)现在DTU消耗的变化明显降低了!请参阅下面的屏幕截图。 DTU 消耗 绩效洞察

于 2017-09-05T15:36:52.293 回答