索引和分片的区别是什么

时间:2011-05-02 08:11:35

标签: indexing terminology sharding

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

2 个答案:

答案 0 :(得分:10)

索引是一种在数据结构中存储列值以便快速搜索的方法。与全表扫描相比,这极大​​地加快了搜索速度,因为并非所有行都必须进行检查。您应该考虑在WHERE子句中的列上使用索引。

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

答案 1 :(得分:0)

索引是将列值存储在B-Tree或Hashing等数据结构中的过程。与查找索引相比,它使搜索或联接查询的速度更快,因为查找值花费的时间更少。分片是在多台计算机中拆分单个表。对于索引编制和搜索,必须选择适当的关键字。

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