我正在将一个系统从VB/Access应用程序移动到SQL服务器.访问数据库中的一个常见问题是使用表来保存正在计算的数据,然后将该数据用于报告.
例如.
delete from treporttable
insert into treporttable (.... this thing and that thing)
Update treportable set x = x * price where (...etc)
Run Code Online (Sandbox Code Playgroud)
然后从treporttable报告运行
我听说当桌面上的所有记录都被删除时,SQL服务器不喜欢它,因为它创建了大量的日志等.我试过临时sql表但是它们不会持续足够长的时间来报告不同的进程运行和报告.
有许多地方可以在应用程序中对不同的报表进行此操作.报告可以每天运行多次,并在报告表中创建大量记录.
任何人都可以告诉我,如果有最佳做法,或者我的日志信息不正确,这个代码在SQL服务器中会很好.
Joh*_*som 20
如果您不需要记录删除活动,则可以使用truncate table命令.
从在线书籍:
TRUNCATE TABLE在功能上与DELETE语句完全相同,没有WHERE子句:两者都删除表中的所有行.但是TRUNCATE TABLE比DELETE更快并且使用更少的系统和事务日志资源.
http://msdn.microsoft.com/en-us/library/aa260621(SQL.80).aspx
delete from sometable
Run Code Online (Sandbox Code Playgroud)
是否允许您回滚更改.因此,如果您的表非常大,那么这可能会导致大量的内存使用和时间.
但是,如果您不担心失败,那么:
truncate sometable
Run Code Online (Sandbox Code Playgroud)
将几乎立即执行,并具有最小的内存要求.但是没有回滚.