2015-08-03 30 views
-2

假设我已经创建了一个带有字段A,B,C & D的表,其中A & B是主键。现在我想根据字段A,B & c创建一个次要指数。这会消耗更多的空间在MYSQL中,因为我正在创建基于3个字段的索引,或者它将主索引与次要索引结合起来以最小化索引所需的空间。如果我在MYSQL中创建一个新的索引,并且所有主键和其他字段都需要更多空间?

+0

即使它确实将它们结合在一起,也会比没有执行任何操作需要更多空间。另外顺便说一句,它不会结合它们 – Drew

+0

是的,它会占用更多的空间。目前还不清楚为什么你需要额外的索引。另一方面,除了在索引中包含第三列(这是考虑到(A,B)是主键的次要考虑因素之外,我无法想到可以帮助的查询。) –

+0

感谢您的回复..只是想知道是否有任何其他有效的方法来进行搜索优化,这将基于A,B&C或我们只需要在A,B和C上创建二级索引。 –

回答

0

是的。创建不必要的索引需要更多的空间,但如果性能不够高效,您只需要担心。

0

创建另一个索引会消耗更多空间。 MySQL可以在搜索不同索引中的列时优化索引(称为索引合并优化)。

0

如果A, B主键,然后(在MySQL)你有以下考虑:

  • A/B中的每一个组合是独一无二的。这些值不是NULL
  • 该表由这对值“聚集”(即有序)。

这是很难想象的情况下对A, B, C指数将是一个很好的想法。毕竟,一个查询如:

select c 
from table t 
where a = 'a' and b = 'b' 

会使主键索引非常优化使用。有一些异常情况下,这样的指数可能有一个边际改善。但是,很可能,您不需要(A, B, C)上的索引。

相关问题