关于SQL的DELETE FROM 的问题?(20分)

  • 主题发起人 易名烦
  • 开始时间

易名烦

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个SQL2K表,没任可关系,四个,三个NVARCHAR(50),一个SMALLDATETIME,
有记录1442条,用DELETE FROM 表名删除记录却用了50多秒,为什么?
 
有触发器?
 
这个表没么都没有,只是一个很很简单的表。独立的。
 
做其它操作快么?还有,访问其他的表速度如何?
 
很快啊,我SELECT *一个几万条记录的表都要不了这么条的时间!
 
你用delete 的话,数据库会做一些设置以碑ROLLBACK,自然就慢了。我对SQL2K不熟悉,但
在ORACLE里面有个命令叫TRUNCATE,是直接删除,不可以ROLLBACK的,要快多了。算是提供
一条思路吧。
 
但我删除一个8万个条记录的表却只用了10秒。为什么?
 
既然是独立的,新建一个和它一样的表试试
另外可以用事件探查器看看
 
哥们帮你UP UP。
 
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUp
 
Drop后然后重建。
 
用truncate table
 
清除日志!!
 
不应该这么慢
 
同意用truncate table
若要删除表中的所有行,则 TRUNCATE TABLE 语句是一种快速、无日志记录的方法。该语句
总是比不带条件的 DELETE 语句要快,因为 DELETE 语句要记录对每行的删除操作,而
TRUNCATE TABLE 语句只记录整个数据页的释放。TRUNCATE TABLE 语句立即释放由该表的
数据和索引占用的所有空间。所有索引的分发页也将释放。

与 DELETE 语句相同,使用 TRUNCATE TABLE 清空的表的定义,同其索引和其它相关的对象
一起仍保留在数据库中。必须使用 DROP TABLE 语句才能除去表的定义。



 
多人接受答案了。
 
sql server中要用delete * from tablename
access中用delete from tablename
 
顶部