在MYSQL中,从纯粹的性能角度来看,如果我有一个包含大量数据的表,其读/写比率为10/1。读/写性能是否更快,在单独的列中有4个搜索条件,并且所有索引都被编入索引,或者将它们组合成一个单独的字符串作为键并存储在一个索引列中?
e.g。说这个表有5列,名字,姓氏,性别,国家和文件,其中前四列将始终作为搜索中搜索参数的一部分给出,或者有一个包含两列,密钥和文件的表。关键的价值可以是john-smith-male-australia ??
我不太了解利弊。我试图强调的一点是,所有参数都将在搜索中给出。
答案 0 :(得分:0)
这取决于。
首先获取查询,然后从中返回,因为这些是您的测试用例。从那些开始,您必须测试复合索引,单独索引或单个复合索引是否最适合数据以及要检索的内容。我们可以建议明智的意见,但不能再访问您的全部数据和您正在使用的查询。
答案 1 :(得分:0)
所有参数都将在搜索中给出。
对于那个特定的情况,如果设计可能将4列混合到第五列(varchar)并将其索引,那么就去做吧。它使索引树变平,因此不需要将3个分支深入叶子级别。它还允许非常快速的二进制分区来获取所需的数据,只要 order of selectivity
中的混合完全。
答案 2 :(得分:0)
始终致力于索引原始数据。 这通常是最有用的 您可以将信息放入索引。
如果您自己连接列,或者如果您让DB执行此操作,则基本相同。如果你让数据库这么做的话,这只是工作量少,容易出错,也不那么尴尬。
而且,最重要的是,如果您对原始数据编制索引,您还可以将其用作覆盖索引,这可以为您提供巨大的性能优势仅查询索引列。