我正在处理一个包含大约 7000 万条记录的表。我需要在这个表上创建一个主键和几个索引。我使用的 SQL 查询如下:
BEGIN;
ALTER TABLE table_name ADD CONSTRAINT table_name_pkey PRIMARY KEY (uniqueid);
CREATE INDEX IF NOT EXISTS table_name_column1_idx ON table_name (column1);
CREATE INDEX IF NOT EXISTS table_name_column2_idx ON table_name (column2);
CREATE INDEX IF NOT EXISTS table_name_column3_idx ON table_name (column3);
CREATE INDEX IF NOT EXISTS table_name_column4_idx ON table_name (column4);
CREATE INDEX IF NOT EXISTS table_name_column5_idx ON table_name (column5);
COMMIT;
但是,执行这些查询需要花费相当长的时间。我没有任何资源限制,因此我正在寻找优化此过程的方法。具体来说,我正在考虑从 Python Django 应用程序并行或同时运行这些 SQL 查询。
我的问题是:
1.我可以使用哪些策略来最小化锁并加快索引过程?
2.是否有任何最佳实践或工具可以帮助有效地管理大型表上的多个索引的创建?
3.在索引创建期间使用 BEGIN; COMMIT; 是否有任何性能优势?
如有任何建议或推荐我将不胜感激。