索引键与索引的单独列,哪一个更快?

时间:2011-03-10 00:05:09

标签: mysql sql indexing

在MYSQL中,从纯粹的性能角度来看,如果我有一个包含大量数据的表,其读/写比率为10/1。读/写性能是否更快,在单独的列中有4个搜索条件,并且所有索引都被编入索引,或者将它们组合成一个单独的字符串作为键并存储在一个索引列中?

e.g。说这个表有5列,名字,姓氏,性别,国家和文件,其中前四列将始终作为搜索中搜索参数的一部分给出,或者有一个包含两列,密钥和文件的表。关键的价值可以是john-smith-male-australia ??

我不太了解利弊。我试图强调的一点是,所有参数都将在搜索中给出。

3 个答案:

答案 0 :(得分:0)

这取决于。

首先获取查询,然后从中返回,因为这些是您的测试用例。从那些开始,您必须测试复合索引,单独索引或单个复合索引是否最适合数据以及要检索的内容。我们可以建议明智的意见,但不能再访问您的全部数据和您正在使用的查询。

答案 1 :(得分:0)

  

所有参数都将在搜索中给出。

对于那个特定的情况,如果设计可能将4列混合到第五列(varchar)并将其索引,那么就去做吧。它使索引树变平,因此不需要将3个分支深入叶子级别。它还允许非常快速的二进制分区来获取所需的数据,只要 order of selectivity中的混合完全

答案 2 :(得分:0)

来自我的sql indexing tutorial

  

始终致力于索引原始数据。   这通常是最有用的   您可以将信息放入索引。

如果您自己连接列,或者如果您让DB执行此操作,则基本相同。如果你让数据库这么做的话,这只是工作量少,容易出错,也不那么尴尬。

而且,最重要的是,如果您对原始数据编制索引,您还可以将其用作覆盖索引,这可以为您提供巨大的性能优势仅查询索引列