MYSQL FEDERATED表

时间:2017-03-11 19:29:02

标签: mysql federated-storage-engine

“FEDERATED表不支持通常意义上的索引;因为远程处理对表数据的访问,实际上是使用索引的远程表。这意味着对于不能使用任何索引的查询因此需要进行全表扫描,服务器从远程表中获取所有行并在本地过滤它们。无论此SELECT语句使用何种WHERE或LIMIT,都会发生这种情况;这些子句本地应用于返回的行。

无法使用索引的查询可能会导致性能下降和网络过载。另外,由于返回的行必须存储在内存中,这样的查询也可能导致本地服务器交换,甚至挂起。“

16.8.3 FEDERATED Storage Engine Notes and Tips

任何人都可以用例子解释我的意思吗?

什么是“无法使用任何索引的查询”?

这意味着我在任何情况下都可以从远程服务器获取完整数据?

1 个答案:

答案 0 :(得分:0)

文档意味着如果对联合表运行查询,它会生成另一个针对远程基表运行的查询。如果在远程服务器上运行的查询无法使用索引,则会强制在远程服务器上进行表扫描,因此该表的所有行都将通过网络进行复制。

您可能认为查询应该在发送回来之前过滤远程服务器上的行,但似乎它不会这样做。只有在使用索引在远程端进行过滤时,它才能过滤远程服务器上的行。

极少数情况下,使用MySQL的联合存储引擎是个好主意。我避免它。