2

mysql索引的性能是否依赖于数据类型

如果是这样,在这种情况下使用的最佳数据类型是什么?

此外,在重复值较少的列上保留索引是否重要,或者即使应用于具有大量重复值的列,它也会提供相同的性能。

提前致谢!

4

3 回答 3

4

除了索引之外,最好的数据类型是满足域要求的最小数据类型。

列数据类型确实会影响这些列上索引的性能。

越小越好。

整数列上的索引效果最好(更小,更快)。

在特定情况下,如果索引的选择性不够,优化器可能会选择不使用索引(即,列具有许多重复值,并且根据统计信息确定的搜索值将导致“太多”行。

从链接@nani1216 发布:

您要索引的一列或多列的大小是相关的,因为数据库服务器必须搜索或索引的数据越少,它的速度就越快,您在磁盘 [或内存] 上使用的存储空间就越少

于 2013-09-16T06:10:20.767 回答
1

是的,性能因数据类型的使用而异。对整数数据类型进行索引比对 char 或 varchar 数据类型进行索引提供了更高的性能。

看看什么是好的 MySQL 索引?

于 2013-09-16T06:15:05.377 回答
1

正如其他人指出的那样,较小的数据类型更好。这是出于简单的原因 - 如果记录较小,您可以在内存中加载更多记录。

在 InnoDB 中,主键是每个二级索引的最后一列,因此小主键对于 InnoDB 表非常重要。

至于索引的“选择性”,优化器可能会选择根本不使用索引,如果值匹配索引的记录超过 50% 则进行表扫描(这是因为,如果引擎是 InnoDB,索引是二级的,不覆盖索引,读取索引要打一次磁盘,第二次才能读取实际的行数据,所以最好直接读取表数据,所以你不会得到太多性能从包含大部分相同值的列上的索引(但如果少量值是例如 0 并且您正在查询这些行,索引可能很好!)

于 2013-09-16T07:30:54.257 回答