Jam*_*s T 0 coldfusion loops row coldfusion-8
我正在删除我的数据库中没有相应注销记录的登录记录,但是现在它很慢它执行此操作:
首先它获取循环查询以检查删除接下来需要查明该用户的下一条记录是登录还是注销,如果是登录,我将其删除.
要获取该类型的下一条记录,它会执行查询查询:
<cfquery dbtype="query" name="getnext" maxrows="1">
SELECT * FROM getlogs WHERE id > #id# AND logType = 'login'
</cfquery>
Run Code Online (Sandbox Code Playgroud)
但它很慢,做了几千次就需要大约56秒.
什么是更快的方法呢?我的循环中的另一个cfloop(基本上是一个循环,直到我到达我想要的行)会更快吗?还有另外一种方法吗?
这听起来像是可以完全在一个查询中完成的事情 - 可能是这样的:
delete from login_table t
where exists (
select id
from login_table
where id > t.id
and logtype = 'login'
)
Run Code Online (Sandbox Code Playgroud)
这与ColdFusion本身无关; 同样的方法适用于任何环境.如果这是一个对应用程序没有同步依赖的维护功能,您甚至可以将其粘贴到由数据库本身中的重复"清理"任务自动调用的存储过程中.