数据库索引实践经验·关于数据库建索引和插数据两者先后顺序对效率的影响
案例2·新数据库建索引和导数据
(1) 先定义索引 (schema) 再 (2) load 数据 比 (2)(1)快的理论分析(前提是实践下来确实是这样吗? 你们谁实践了之后可以说一声) 【(1)(2)】的话是边写入数据边建立索引将索引写数据库; 【(2)(1)】 的话先把数据全部写入, (1)的时候会将(2)阶段数据全部读出,建立实际索引写入数据库。 【(2)(1)】 至少比【(1)(2)】多了一个读全部数据的过程。 (1)只能被称为定义索引schema,而不是实际的简历起索引。
案例2的反例:
效率高。
案例1·重新生成和重新组织索引区别
某表记录有1亿条左右(数据已存在且庞大),12个索引(索引已存在),“删除全部索引后再插入新索引 的速度“ 是 ”直接用新索引修改原来的12个索引的速度” 的百倍。其实原理很简单,边插入边维护索引,开销太大了, 前者是直接删除后直接写, 后者随机读取后修改。背后的原理涉及了磁盘页面的重新组织。