我有一张约 60GB 的表格,我正在尝试创建索引, 它非常慢(几乎一天,仍在运行!)
我发现大部分时间都在磁盘I / O上(4MB / s),并且它没有那么多内存或CPU使用
我试过:运行'pragma cache_zise = 10000'和'pragma page_zise = 4000' (在我创建表格之后),它仍然无济于事。
如何在合理的时间内运行“创建索引”?
答案 0 :(得分:2)
在数据库表上创建索引是一次性操作,根据许多因素(包括索引中包含的字段数和类型数),要索引的数据表的大小,它可能很昂贵,数据库运行的机器的硬件,甚至可能更多。
为了给速度提供一个合理的答案,我们需要知道表的模式,你正在创建的索引的定义,你是否合理地确定你是否在索引中包含数据实际上是唯一的独特的,您的服务器的硬件规格是什么,您的磁盘速度是多少,磁盘上有多少可用空间,您使用raid阵列,raid级别,ram多少以及利用率是多少。等...
现在所说的,这可能会更快,但我还没有测试过。
制作要索引的表的结构重复表。 将索引添加到新的空表。 将数据从旧表复制到新表中。 放下旧桌子。
我的理论是,在添加数据时索引数据的成本要低于挖掘已经存在的数据并在事后添加索引。
答案 1 :(得分:-1)
创建表时,应创建索引。 PS:你应该认为索引是正确的。你不需要在运行时创建索引。