【问题标题】:Drop indexes separately from drop table?从删除表中单独删除索引?
【发布时间】:2013-08-23 07:56:14
【问题描述】:

Firebird:对于具有许多索引(主索引和辅助索引)的大型表,在 DROP TABLE 之前单独删除索引会比让 Firebird 删除 DROP TABLE 中的索引更快吗?

【问题讨论】:

  • 你试过了吗?我怀疑这并没有什么不同,因为服务器将执行相同的操作,除了一个是单个命令,另一个需要您执行单独的命令(它有自己的开销,如网络往返等)。跨度>
  • 现在我的桌子并没有那么大,我可以看到差异,但我们的几个客户会有巨大的桌子。 DROP 将发生在数据库更新场景中。

标签: firebird


【解决方案1】:

我不认为应该有很大的不同! 删除索引应该是即时的,也应该删除表!

【讨论】:

  • 不记录数据定义语言。这就是它应该是瞬时的原因。一些奇异的数据库记录了 DDL,但我不认为 firebird 是其中之一。
  • 唯一完成的操作是从表和索引以及空间分配中删除系统表中的条目。
  • 我做了一些谷歌搜索,这篇文章让我有点担心:tech.groups.yahoo.com/group/firebird-support/message/114995我知道,例如SQL Server 对大型表使用延迟删除,但我不知道 FireBird。
  • @JanDoggen 用例是什么?删除表通常是更新过程的一部分,删除表是否需要一段时间真的很重要吗?如果它是您正常应用程序逻辑的一部分,您可能需要查看全局临时表。
  • 删除和重新创建表通常是快速批量删除的用例。通常你也有 truncate 它也被归类为 DDL 但只会丢弃存储。
猜你喜欢
  • 2020-11-30
  • 1970-01-01
  • 1970-01-01
  • 2018-09-12
  • 2019-07-26
  • 2011-10-29
  • 1970-01-01
  • 1970-01-01
  • 2010-10-27
相关资源
最近更新 更多