代码之家  ›  专栏  ›  技术社区  ›  Alan Hollis

MySQL移动索引位置

  •  2
  • Alan Hollis  · 技术社区  · 16 年前

    所以谷歌上的搜索没有发现任何东西,到目前为止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。

    2 回复  |  直到 9 年前
        1
  •  2
  •   Romain Hippeau    16 年前

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

        2
  •  2
  •   Mark Byers    16 年前

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