使用newquery与union& amp;连接数据库?

时间:2011-03-28 15:20:34

标签: sql database coldfusion

使用queryNew()构建查询的效率如何?我最近遇到的代码创建了一个db调用,用于“虚拟查询”,它没有连接到这样的任何表:

<CFQUERY NAME="IncludeList" ....>
Select 0 as code, 'Exclude' as description
UNION ALL
Select 1 as code, 'Include' as description
</CFQUERY>

VS

<cfset IncludeList = queryNew("code, description","Integer, VarChar")>
<cfset newrow = queryaddrow(IncludeList, 2)>
<cfset temp = querysetcell(IncludeList, "code", 0, 1)>
<cfset temp = querysetcell(IncludeList, "description", "Exclude", 1)>
<cfset temp = querysetcell(IncludeList, "code", 1, 2)>
<cfset temp = querysetcell(IncludeList, "description", "Include", 2)>

3 个答案:

答案 0 :(得分:2)

避免数据库连接。

对于QofQ(即dbtype="query"),虽然这似乎是一个好主意,但实际上我看到当多个请求都达到相同的QofQ时,服务器处于负载崩溃状态。基于堆栈跟踪,它出现了QofQ实现单线程,阻塞其他线程。

另一方面,我也有代码执行querySetCell()事情并且这不是性能问题。

答案 1 :(得分:1)

应始终首选限制数据库调用。

答案 2 :(得分:0)

我更喜欢在QoQ上使用QueryNew。从长远来看,它会给你更多的灵活性。

顺便说一句,您知道您不必将querysetcell等函数分配给'临时'变量:

<cfset temp = querysetcell(IncludeList, "code", 0, 1)>

你可以这样做:

<cfset querysetcell(IncludeList, "code", 0, 1)>