14

索引和分片有什么区别。两者的作用是什么?

4

2 回答 2

16

索引是一种将列值存储在旨在快速搜索的数据结构中的方法。与全表扫描相比,这极大​​地加快了搜索速度,因为不必检查所有行。您应该考虑在 WHERE 子句中的列上设置索引。

分片是一种在不同机器之间拆分表的技术。这使得查询的并行解析成为可能。例如,可以在一台机器上搜索一半的表,而在另一台机器上搜索另一半。这在某些情况下可以通过添加更多硬件来提高性能,尤其是对于大型表。

于 2011-05-02T08:16:40.337 回答
3

索引是将列值存储在 B-Tree 或散列等数据结构中的过程。它使搜索或连接查询比没有索引更快,因为查找值花费的时间更少。分片是将单个表拆分到多台机器上。对于索引和搜索,都需要选择适当的键。

对于大型表,您应该同时考虑索引和分片。例如,考虑一个有 100 万行的表 X。如果您在表 X 中搜索键 K,查询处理将直接跳转到包含该键的 R 行并将 R 返回给用户。如果您在大多数情况下没有超过存储限制,则不需要对表进行分片。如果超出存储限制,则必须进行分片。对小表进行分片没有任何好处,因为它会导致网络和聚合子查询的额外开销。

于 2019-03-07T02:10:50.460 回答