gpt4 book ai didi

sql - 有没有办法推迟更新索引?

转载 作者:行者123 更新时间:2023-12-02 21:10:26 28 4
gpt4 key购买 nike

我有一个巨大的数据库,需要对其进行索引,我将大量信息插入其中,分为一千个 block 。每次插入时索引都会更新。问题是,在大约第 100 条左右之后,插入信息所需的时间变得非常长,因为这些巨大的事务导致日志文件攀升到超过 300 兆。

有没有办法推迟更新索引(可能使用 FREEZE INDEX 命令或其他命令),从而索引将保持在架构中定义,并且在填充所​​有表后,它可能会解冻并更新。

我知道这已经可以通过DROP INDEXCREATE INDEX来完成,但我一直在寻找一种更优雅的解决方案,或者可能是一个技巧。

不幸的是,我无法轻松更改 DBMS,否则我会使用 PostgreSQL 进行研究。

最佳答案

除了不“优雅”之外,还有其他原因让您不想使用 DROP INDEX/CREATE INDEX 吗?我假设您是在定期维护期间执行此批量加载? DROP INDEX/CREATE INDEX 几乎是批量数据加载的标准过程。通过最后重新创建非聚集索引,您可以确保数据库可以创建最有效的索引结构(从而使针对数据的查询运行得更快)。

一些数据库具有额外的功能来向您隐藏这些详细信息(SQL Server 允许您“禁用/启用”索引),但在幕后它们仍然有效地执行 DROP INDEX/CREATE INDEX。

再说一遍,即使存在“卡住索引”,您也不会保存任何内容。如果您要输入大量数据,最好在最后完全重建索​​引(这实际上就像“DROP INDEX/CREATE INDEX”)。

如果您的日志变得太大,也许您应该将插入分成更小的事务 block ?

关于sql - 有没有办法推迟更新索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8963826/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com