mysql更新外键的实验

来源:互联网 发布:天刀如何导入捏脸数据 编辑:程序博客网 时间:2024/05/21 17:07

text表

    id, ... , fk_topic_id, ...

topic表

    id, ...

 

3000个记录

 

实验一  在有索引约束的情况下对text表的更新,调用sql语句

sql语句 : update text set fk_topic_id = ? where id = ?

 

1分7秒563

 

实验二 在有索引约束的情况下对text表的更新,调用存储过程

存储过程 : UpdTxtFk(textId bigint, topicId bigint)

 

1分10秒250

 

实验三 先删除索引约束,在对text表的更新,调用sql语句

sql语句:

    删除约束和索引

        ALTER TABLE text DROP FOREIGN KEY text_topic;

        ALTER TABLE text DROP DROP INDEX text_topic;
    更新text

        update text set fk_topic_id = ? where id = ?";
    重建约束

        ALTER TABLE text ADD CONSTRAINT text_topic

        FOREIGN KEY (fk_topic_id) REFERENCES topic (id)
        on delete CASCADE

        on update CASCADE

 

1分13秒250

 

实验四 先删除索引约束,在对text表的更新,调用存储过程

存储过程:

    删除索引和约束

        DelCstrFromTxt()

    更新text

        UpdTxtFk(textId bigint, topicId bigint)

    重建约束

        AddCstrIntoTxt()

 

1分11秒593

 

删除约束貌似不能减少更新时间啊。。。郁闷