小编har*_*ash的帖子

为什么添加二级索引没有提高选择性能?

我在 MySQL 中有一个名为 的表,messages如下所示:

id (primary key)   | description    |  created_at(timestamp) 
Run Code Online (Sandbox Code Playgroud)

该表应该保存我的应用程序用户之间的聊天消息。因此,对它的写操作次数会很高。

该应用程序有一个 API,可返回两个时间戳之间的所有消息。这个查询也很常见,但少于写操作的次数。

我用 100 个并发连接和该表中的大约 15000 行运行 mysqlslap,总时间约为 8.6 秒。

然后我在 上添加了一个二级索引created_at,希望在两次搜索之间在更短的时间内获得结果,但是对于相同的输入,我增加了 0.3 秒。

为什么我没有看到显着的性能提升?

编辑:

这是我的桌子的样子:

DROP TABLE IF EXISTS `mssg`;

CREATE TABLE `mssg` (
  `id` INTEGER NULL AUTO_INCREMENT DEFAULT NULL,
  `body` MEDIUMTEXT NULL DEFAULT NULL,
  `length` VARCHAR NULL DEFAULT NULL,
  `created_at` TIMESTAMP NULL DEFAULT NULL,
  PRIMARY KEY (`id`)
);
Run Code Online (Sandbox Code Playgroud)

这就是我添加索引的方式:

ALTER TABLE testalter_tbl ADD INDEX (created_at);
Run Code Online (Sandbox Code Playgroud)

通常,select 语句会返回大约 150 到 350 条消息

mysql index optimization

4
推荐指数
1
解决办法
529
查看次数

标签 统计

index ×1

mysql ×1

optimization ×1