【发布时间】:2012-06-26 21:12:38
【问题描述】:
假设我有一个包含数百万行的表,其中有 3 个整数变量:x、y 和 z,我在 SELECT 中对其进行搜索... WHERE x=a and y=b and z=c
哪个会更快/更高效?
将 3 个字段组合成单独的字符串列“x_y_z”(例如 1231_3242_6864)并对其进行索引
针对三个整数创建一个 3 列索引?
【问题讨论】:
-
每个整数的最大值是多少?
-
这里为了论证的目的,说每个 50 000
-
就存储大小而言,三个
UNSIGNED SMALLINT字段总共需要6 个字节,而像12345_67890_24680这样的字符串可能需要17 个字节。然后,相同的原则适用于索引的 RAM 使用。某些方面可以调整,但在我用 3 百万进行的快速测试中。行,一字符串表是 130 MB 数据 / 170 MB 索引,而三 Int 表是 97 MB 数据 / 76 MB 索引。 -
这很简单:3 列和复合索引。
标签: mysql performance