在大表上添加索引需要很长时间

2024-04-15

我有一个表(在 MySQL 中)名为unused大约有 540 万行。该表如下所示:

CREATE TABLE `unused` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `account_id` bigint(20) DEFAULT NULL,
  `heading_label` varchar(255) NOT NULL,
  `value` varchar(255) NOT NULL,
  `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`id`),
  KEY `fk_account_id` (`account_id`),
  CONSTRAINT `unused_ibfk_1` FOREIGN KEY (`account_id`) REFERENCES `account` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=80524905 DEFAULT CHARSET=latin1

我认为如果我添加索引,对该表的查询可能会更快。我尝试运行这个:

create index heading_label
on unused (heading_label) using btree

在重新启动 MySQL 之前,我让这个命令运行大约一两个小时。尽管这个表有超过 500 万行,但运行此类事情似乎不应该花费一个多小时。但也许这很正常。我真的不知道自己在做什么。有人可以启发我吗?


这很正常,具体取决于您的服务器规格。 MySQL创建索引的方式是先对表进行排序,然后添加索引。这意味着它需要重新写入所有数据,然后对所有数据进行排序(无论如何都不便宜)。这取决于您的服务器的 I/O 性能以及您可以为其提供多少内存。

以下是一些获取更多信息的资源...

  • MySQL 错误报告 http://bugs.mysql.com/bug.php?id=9544
  • 另一个 MySQL 错误报告 - 有一个很好的建议 http://bugs.mysql.com/bug.php?id=24495
  • 包含一些有用信息的论坛主题 http://forums.devshed.com/mysql-help-4/slow-to-add-an-index-186951.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在大表上添加索引需要很长时间 的相关文章

随机推荐

  • IE8 中使用 Fancybox 的 jQuery 问题

    我最近收购了一个旧网站 我们谈论的是表格 图像地图 凡是你能想到的 我被要求将 Flash 画廊的旧链接放入灯箱中 我只是用了一个javascript openLightbox 在画廊链接 右上角 上 我知道我知道 但是这看起来并不不合时宜
  • tcp_max_syn_backlog 和 somaxconn 有什么区别?

    我一直在阅读一些关于 Linux 上的 TCP 实现的文章 我很困惑 它们之间有什么区别net ipv4 tcp max syn backlog and net core somaxconn和backlog作为参数传递给listen 系统调
  • 在Excel中通过VBA调用COM加载项

    我有一个用 VSTO 编写的 COM 加载项 我想使用 VBA 宏来调用它 对于加载项 我需要启动它 输入一些文本 自动 然后运行应用程序 该加载项都是按钮 我无法轻松访问代码 因为其中一些代码是加密的 它是第三方 遗憾的是 当单击此加载项
  • 如何隐藏我的源代码以免被复制

    最近有人通知我 我的网站被复制了 当我查看他给我的链接时 我发现除了徽标和文本之外 该网站与我的网站相同 有没有办法隐藏我的代码 或者使我的页面无法右键单击 我在一些网站上看到 如果您访问http example com images ht
  • unique_ptr 的初始化有什么问题?

    有人可以告诉我 以下 unique ptr 初始化有什么问题吗 int main unique ptr
  • 如何动态更改文本字段中特定文本的颜色?

    Consider bellow image I want to dynamically change the text color of part of the text based on the user input text not t
  • Eclipse中的部署目录在哪里?

    我正在 Eclipse 中开发一个 Web 应用程序 部署目录树位于哪里 在我的 Java 工作区树中的 Apache 目录结构或某些子目录树结构中 我问这个问题是因为当我的教程应用程序的更新不起作用时 我去浏览目录树 并且假设src子树代
  • WPF:将 DataGrid 绑定到列表

    有趣的是 有时简单的事情会在背后咬我一口 我可以使用 DataGridTextColumn 将 DataGrid 很好地绑定到某个任意类的集合 如下所示 bound to List
  • 使用 web-fragment 时 tagdir 属性无效

    我正在使用 web fragment 功能在 jar 中维护 JSP 和标签 并且使用这种方法 我的 JSP 页面无法找到 tagdir 并导致 此标签库的 tagdir 属性值无效 这是我的罐子里的结构 META INF 资源 WEB I
  • 在 Java 中将颜色名称转换为 RGB 值

    当颜色名称作为输入给出时 我想要一个 RGB 值 以下代码适用于某些颜色 我猜适用于红色等原色 但适用于其他一些颜色 例如青色和淡紫色 import java awt Color import javax swing text html S
  • 如何找到最新的 gradle 版本和包装器

    嗨 我对 Android 开发相当陌生 我对 Gradle 版本和 gradle wrapper properties 中的分发 url 有疑问 classpath com android tools build gradle gradle
  • 如何使用 iOS Swift 更新 firebase 中的单个数组元素?

    这里我使用 firestore 查询来更新 插入数据 如何将数组值的字典更新到 firebase 数据库 here is my firestore data structure 现在可以获取数据slot1 gt 第 0 个位置值在模型类中
  • 谷歌图表显示的是金钱而不是百分比

    给定饼图的数据 data new google visualization arrayToDataTable Sales Revenue Distribution Author 5 Company 2 Tax 0 4 Payment Pro
  • 如何解压缩C中的字符数组

    我需要创建函数 char decompress const char src 该函数的输入是一些字符串 Hello world gt Hello world Hel2o world 10 gt Hello world 正如您所看到的 如果有
  • 使用 IntelliJ 运行 JUnit 测试

    我正在使用 IntelliJ 2018 1 并且我正在尝试运行TeaVM http teavm org JUnit 测试 但运行测试时CTRL SHIFT F10测试被跳过 RunWith TeaVMTestRunner class Ski
  • 从 matplotlib 刻度标签格式中删除前导 0

    如何在 matplotlib 中将数字十进制数据 例如 0 和 1 之间 的刻度标签更改为 0 1 2 而不是 0 0 0 1 0 2 例如 hist rand 100 xticks 0 2 4 6 8 将标签格式设置为 0 0 0 2 等
  • 使用 Keith Wood 的 jQuery SVG 插件对外部加载的 SVG 进行动画处理

    我正在尝试使用 Keith Wood 为从外部 SVG 加载的一组路径的填充颜色设置动画plugin http keith wood name svg html 首先 我将 SVG 导入到 div 容器中 document ready fu
  • 本地通知在设备上不起作用,但在模拟器上起作用

    我读过一些如何使用的指南UILocalNotification的 所以我一直在尝试 但自从第一次尝试以来还没有成功 要在 AppDelegate m 中注册通知 我使用 BOOL application UIApplication appl
  • 设备支持 ,但 APK 仅支持 x86

    我正在尝试通过 Android 模拟器为不同的 CPU ABis 部署和调试应用程序 但出现此错误 它没有指定模拟器支持哪些 ABI 我尝试运行支持所有 ABI 的 APK 但仍然遇到相同的错误 这种情况仅发生在具有 Google Play
  • 在大表上添加索引需要很长时间

    我有一个表 在 MySQL 中 名为unused大约有 540 万行 该表如下所示 CREATE TABLE unused id bigint 20 NOT NULL AUTO INCREMENT account id bigint 20