【问题标题】:MYSQL moving the position of an indexMYSQL 移动索引的位置
【发布时间】:2011-03-12 00:47:49
【问题描述】:

所以在 google 上搜索并没有找到任何东西,到目前为止 StackOverflow 也没有。

基本上我的问题是:我有一个merge table 和另一个我希望合并到其中的普通表。不幸的是,这个新表中的一个索引不在位,因此合并不起作用。

现有的合并表索引:

KEY `Row ID` (`Row ID`),
KEY `Correlation ID` (`Correlation ID`),
KEY `Unit Serial Number` (`Unit Serial Number`,`Trunk Number`),
KEY `Seize Date` (`Seize Date`),
KEY `Unit Serial Number_2` (`Unit Serial Number`,`Type`,`Trunk Number`),
KEY `Unit Serial Number_3` (`Unit Serial Number`,`Type`,`Seize Date`,`Trunk Number`),
KEY `Processed` (`Processed`),
KEY `Called Number` (`Called Number`),
KEY `Calling Number` (`Calling Number`),
KEY `File ID` (`File ID`)

新表索引:

PRIMARY KEY (`Row ID`),
KEY `Correlation ID` (`Correlation ID`),
KEY `Unit Serial Number` (`Unit Serial Number`,`Trunk Number`),
KEY `Seize Date` (`Seize Date`),
KEY `Unit Serial Number_2` (`Unit Serial Number`,`Type`,`Trunk Number`),
KEY `Unit Serial Number_3` (`Unit Serial Number`,`Type`,`Seize Date`,`Trunk Number`),
KEY `Called Number` (`Called Number`),
KEY `Calling Number` (`Calling Number`),
KEY `File ID` (`File ID`),
KEY `Processed` (`Processed`)

如您所见,讨厌的已处理键位于错误的位置,导致合并表无法正常工作。

有什么快速解决这个问题的方法吗?

编辑:

我需要合并的表大小约为 5 gig。

【问题讨论】:

    标签: mysql indexing merge


    【解决方案1】:

    创建一个临时表进行合并,然后移动到旧表

    【讨论】:

    • 我最终选择了这个解决方案。以这种方式重建索引比删除和重建其他索引要快。谢谢罗曼。
    【解决方案2】:

    尝试删除最后四个索引,然后以正确的顺序重新创建它们。

    【讨论】:

    • 这只是一个小问题......这张桌子的大小约为 5 gig。真的应该在原帖中提到这一点。道歉。
    猜你喜欢
    • 2012-01-06
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 2022-06-21
    相关资源
    最近更新 更多