索引和分片有什么区别?它们的作用是什么?
索引是一种存储列值的数据结构,旨在实现快速搜索。与全表扫描相比,这可以大大加快搜索速度,因为不必检查所有行。您应该考虑在WHERE子句中的列上建立索引。
分片是一种将表拆分到不同机器之间的技术。这使得查询可以并行解析。例如,一半的表可以在一台机器上搜索,另一半可以在另一台机器上搜索。对于大型表格,增加更多硬件可能会显著提高性能。
索引是将列值存储在像B-Tree或哈希表之类的数据结构中的过程。它使搜索或联接查询比没有索引时更快,因为查找值所需的时间更少。分片是将单个表拆分为多台机器。对于索引和搜索,必须选择适当的键。
对于大型表,应同时考虑索引和分片。例如,考虑一个有100万行的X表。如果您在表X中搜索关键字K,则查询处理将直接跳转到包含该关键字的行R并将其返回给用户。如果您未超过存储限制,大多数情况下不需要将表进行分片。如果您超过存储限制,则必须进行分片。对于小表而言,分片无益,只会增加网络和子查询聚合的额外开销。