我习惯了 Adobe ColdFusion,并且一直使用 cachedafter
和“简单”日期来缓存查询:
<cfparam name="application.icons_last_changed" default="#now()#">
<cfquery name="get_icons" cachedafter="02/02/1978" datasource="#application.datasources.main#">
SELECT icon_id, icon_name
FROM REF_Icon
WHERE #application.icons_last_changed#=#application.icons_last_changed#
ORDER BY sort_order
</cfquery>
我将我的项目从 ColdFusion/MSSQL 迁移到 Railo/PostgreSQL。今天,Railo 诊断中的一些内容引起了我的注意。
- 我习惯于在/path/qry_get_ref_icon.cfm 中看到“get_ref_icon (Datasource=Workstream, Time=cached, Records=39)”
- 但在 Railo 中,我在/pathqry_get_ref_icon.cfm 中看到“get_ref_icon (Datasource=Workstream, Time=0.974 ms, Records=39)”。
考虑到 Railo 可能不支持 cachedafter
的简单数据值(“02/02/1978”),我尝试使用 createodbcdatetime('1978-02) 设置日期-02 16:37:00')
,但这似乎没有什么区别。
当然,0.974 毫秒的时间太短了,也许查询会被缓存,而 Railo 并不像 ColdFusion 那样明确。
我的查询是否被缓存,或者我的处理方式是否错误?
最佳答案
不,查询没有被缓存。
我按照 Busches 的建议查看了 <cfdump var="#get_icons#" />
的结果:
Query
Template:/super/double/secret/path/qry_get_ref_icon.cfm
Execution Time (ms):0.624
Recordcount:39
Cached:No <--UH OH, SPAGHETTI-O's
Lazy:No
SQL:
SELECT icon_id, icon_name
FROM REF_Icon
WHERE active_ind=1 /*{ts '1978-02-02 16:37:00'}*/
AND {ts '2013-02-20 22:25:14'}={ts '2013-02-20 22:25:14'}
ORDER BY sort_order
因为我是一个不信任的人,所以我也遵循了 Adam Cameron 的建议,更改了一些数据,然后重新运行查询。查询结果已更新,因此没有缓存。
我已向 Railo 的优秀人员报告了该问题:https://issues.jboss.org/browse/RAILO-2318
关于railo - 我的查询是否被缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14991960/