Mysql 索引键与索引独立列,哪一个更快?

Mysql 索引键与索引独立列,哪一个更快?,mysql,sql,indexing,Mysql,Sql,Indexing,在MYSQL中,从纯性能的角度来看,如果我有一个具有10/1读/写比率的大量数据的表。将4个搜索条件放在单独的列中并全部索引,或者将它们组合到一个字符串中作为键并存储在一个索引列中,读/写性能会更快吗 e、 g.假设该表有5列,分别为名字、姓氏、性别、国家/地区和文件,其中前四列将始终作为搜索参数的一部分提供,或者该表有两列,即键和文件。其中密钥的值可以是john smith male australia 我不太明白其利弊。我想强调的一点是,所有参数都将在搜索中给出。这取决于具体情况 首先获取查

在MYSQL中,从纯性能的角度来看,如果我有一个具有10/1读/写比率的大量数据的表。将4个搜索条件放在单独的列中并全部索引,或者将它们组合到一个字符串中作为键并存储在一个索引列中,读/写性能会更快吗

e、 g.假设该表有5列,分别为名字、姓氏、性别、国家/地区和文件,其中前四列将始终作为搜索参数的一部分提供,或者该表有两列,即键和文件。其中密钥的值可以是john smith male australia

我不太明白其利弊。我想强调的一点是,所有参数都将在搜索中给出。

这取决于具体情况

首先获取查询,然后从中返回,因为这些是您的测试用例。从中,您必须测试组合索引、单独索引或单个组合索引是否最适合数据和您想要检索的内容。我们可以提出知情的意见,但如果不能访问您的全部数据和您将使用的查询,就没有更多了

所有参数都将在搜索中给定的事实

对于这种特定的情况,如果在设计上可以将4列合并成第五列(varchar)并对其进行索引,那么就这样做。它将索引树展平,因此它不需要深入到叶级的3个分支。它还允许非常快速的二进制分割来获取所需的数据,只要混搭是精确的
选择性顺序

始终以索引原始数据为目标。 这通常是最有用的 可以放入索引中的信息

如果您自己连接列,或者让DB来连接列,则本质上是相同的。如果让DB来做的话,只会减少工作量,减少出错的可能性,也不会那么尴尬


此外,如果对原始数据进行索引,还可以将其用作覆盖索引,如果只查询索引列,这会给您带来巨大的性能好处,这在某种程度上取决于所看到的查询工作负载……以及列的选择性您还需要额外的约束和一些触发器来确保“mash”始终与原始列相等。