在多索引mysql中使用外键索引

在多索引mysql中使用外键索引,mysql,indexing,Mysql,Indexing,我有一个几乎有20个字段的表,其中有几个是外键,已经被Mysql索引了,现在我想创建一个包含3个FK字段的多索引索引, 第一次尝试是基于字段的 ALTER TABLE `Add` Add INDEX `IX_Add_ON_IDCat_IDStatus_IDModeration_DateTo_DateAdded` (`IDCategory`,`IDStatus`,`IDModeration`,`DateTo`,`DateAdded`); 但我认为最好是在索引上建立索引,而

我有一个几乎有20个字段的表,其中有几个是外键,已经被Mysql索引了,现在我想创建一个包含3个FK字段的多索引索引, 第一次尝试是基于字段的

ALTER TABLE `Add`
    Add INDEX `IX_Add_ON_IDCat_IDStatus_IDModeration_DateTo_DateAdded` 
       (`IDCategory`,`IDStatus`,`IDModeration`,`DateTo`,`DateAdded`);
但我认为最好是在索引上建立索引,而不是字段,但我的以下工作面临错误:
错误代码:1072。表中不存在键列“FK\U添加\U类别”

ALTER TABLE `Add`
    Add INDEX `IX_Add_ON_IDCat_IDStatus_IDModeration_DateTo_DateAdded`
        (`FK_Add_Category`,`FK_Add_AddStatus`,`FK_Add_AddModeration`,
         `IX_Add_DateTo`,`IX_Add_DateAdded`);

我的问题是,是否可以在现有索引(在我的例子中是FK索引)上添加索引,并且只有这样才能在列上创建索引?如果是,我如何创建它?

索引是一个有序的值列表。它用于提高在表中查找行的效率

想想常见的、现实生活中的
索引(姓、名)
。如果你知道某人的姓和名,那么你就很容易找到他们。如果你只知道他们的姓,那就很容易了

但如果你只知道他们的名字,那就没用了

外键
需要查找。显然你有一个FK to
AddStatus
,因为我看到了
FK\u Add\u AddStatus
。该FK生成了对
AddStatus
的查找。可以将其视为
名字
上的单独索引。它与
上的索引完全分开

5列通常太多,无法放入单个索引中

MySQL对给定的
SELECT
只使用一个索引


那么,现在,我问,什么
SELECT
可以使用这个5列索引?请给我们看看。我们可以讨论它是否有用,以及列是否处于最佳顺序。

在索引上建立索引-这是不可能的。您可以在表名(索引列名)上建立索引,索引不是列。可能重复的问题是什么?在MySQL中,第一条语句是正确的。@zhilevan。没有“尚未”。“索引上的索引”在SQL上下文中没有意义。