mysql - 索引中的列顺序

标签 mysql indexing query-optimization

我正在处理一个包含大量行(6 百万+)的数据库。

该表在两列上有一个复合主键。

它还在每个字段上都有单独的索引,因为有查询需要此索引。显然,这些索引之一(索引?)是多余的,会降低写入操作的性能。

如何找出哪一个是多余的?据我所知,主键的第一列已经建立索引,不需要单独建立索引。那是对的吗?如果是这样,我是否可以运行一个查询来找出列表中的第一个?

最佳答案

SHOW INDEXES FROM tablename 将包含一个 Seq_in_index 列,它告诉您哪一列是第一列(也称为最左边)、第二列等。

因此,列出的 Seq_in_index 值为 1 的列就是不需要自己的单列索引的列。

您还可以使用SHOW CREATE TABLE tablename来查看从左到右列出的索引,正确显示的顺序代表了索引中列的顺序。

关于mysql - 索引中的列顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49462422/

相关文章:

mysql - 需要根据另一个表的结果更新表

mysql - 增加一个整数,用作新 MySQL 条目的索引。有没有更好的办法?

mysql - 使用日期字段作为表之间的引用是否明智?

mysql - 如何优化这段代码

sql - 是否有任何工具集/技术可以确定 SQL 查询在功能上是否相同?

java - Oracle中基于rowid的更新

c# - mysql-c# 连接未完成

php - Mysql - 如何为列指定别名

r - 获取R中字符串第一个大写字母的索引?

c++ - 索引运行时间间隔错误