我正在使用带有 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 的选项。
我认为这些是我的选择。你认为哪个更好?
- 当您使用 cfqueryparam 但指定正确的数据类型(使用 sp_prepexec ?)时,尝试逆向工程冷融合正在做什么
- 完全删除 cfqueryparam 的使用,并在将其硬编码到查询中之前验证该字符串是有效的 uuid(例如 where [uuid] = '#attributes.uuid#'),但我担心我会失去对所有执行的可见性此查询在 Azure SQL Performance Insight 工具中组合在一起