Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用cfqueryparam创建准备好的语句的条件?_Sql Server_Jdbc_Coldfusion_Prepared Statement - Fatal编程技术网

Sql server 使用cfqueryparam创建准备好的语句的条件?

Sql server 使用cfqueryparam创建准备好的语句的条件?,sql-server,jdbc,coldfusion,prepared-statement,Sql Server,Jdbc,Coldfusion,Prepared Statement,只要有1个cfqueryparam,那么cfquery是否就成为一个准备好的语句?还是有其他条件 当orderby子句或FROM子句是动态的时会发生什么?每一个独特的组合都会成为一份事先准备好的声明吗 当我们使用INSERT执行cfloop时,如果每个值都使用cfqueryparam'ed,并以不同的迭代次数调用cfquery,会发生什么 准备过多的报表是否存在任何潜在问题 DB如何处理准备好的语句?它们会被转换成类似于存储过程的东西吗 在什么情况下我们不应该使用事先准备好的声明 谢谢大家! 我

只要有1个
cfqueryparam
,那么
cfquery
是否就成为一个准备好的语句?还是有其他条件

orderby
子句或
FROM
子句是动态的时会发生什么?每一个独特的组合都会成为一份事先准备好的声明吗

当我们使用
INSERT
执行
cfloop
时,如果每个值都使用cfqueryparam'ed,并以不同的迭代次数调用cfquery,会发生什么

准备过多的报表是否存在任何潜在问题

DB如何处理准备好的语句?它们会被转换成类似于存储过程的东西吗

在什么情况下我们不应该使用事先准备好的声明


谢谢大家!

我可以回答你问题的某些部分:


一个查询将成为一个preparedStatement,只要有一个
。此外,如果您询问执行计划,那么所涉及的不仅仅是preparedStatement生成的数量。这是一个庞大的主题,非常依赖数据库。我对它没有DBA的理解,但我可以回答一些有关MS SQL的问题

当ORDERBY子句或FROM子句是动态的时会发生什么?将 每一个独特的组合都会成为一份事先准备好的声明

基本sql是不同的。因此,对于每个唯一的ORDERBY子句,您将得到单独的执行计划

当我们使用INSERT和每个值执行cfloop时会发生什么 cfqueryparam'ed,并使用不同数量的 迭代

MS SQL应该在所有迭代中重用相同的计划,因为只有参数会更改

该视图对于查看缓存了哪些计划以及它们的重用频率非常有用

SELECT  p.usecounts, p.cacheobjtype, p.objtype, t.text 
FROM    sys.dm_exec_cached_plans p
        CROSS APPLY sys.dm_exec_sql_text( p.plan_handle) t
ORDER BY p.usecounts DESC
要首先清除缓存,请使用DBCC FLUSHPROCINDB
。显然,不要在生产服务器上使用它

DECLARE @ID int
SET @ID = DB_ID(N'YourTestDatabaseName')
DBCC FLUSHPROCINDB( @ID )

还值得注意的是,默认的MySQL JDBC设置禁用服务器端准备的语句(正如我在这里所揭示的)。