sql跨服务器多表查询?
创建链接服务器,然后跨服务器查询相当于跨数据库查询同一服务器。那么它它只是几个表的联合查询。
mysql中,分表查询和索引查询哪个更快?
子表和索引不是一个可选择的问题。通常使用MySQL时(其他数据库也是如此),大多数情况下必须增加索引。好处是查询速度大大提高,数据越多越明显。缺点是会在一定程度上影响添加、修改、删除的速度,但这种影响相对于查询效率的提升来说不值一提。
当单个表的数据量进一步增加,比如增加到几千万或者上亿的级别,单个MySQL已经不足以支撑这么多的数据了。这时候就要考虑分区、表或者数据库了。当然,分表后,每个子表中仍然可以有索引。
如果非要说分表查询和索引查询哪个更快,在数据量没有达到分表的水平时,比如只有一百万的数据量,我觉得索引查询更快。毕竟分表查询也需要程序路由到数据所在的分区,同样需要时间。
告诉我更多关于表拆分的信息。当MySQL单表数据量小于1000万时,性能更好。超过1000万,性能就会下降。超过5000万或者6000万的时候,性能下降会更明显。这是要考虑表拆分的。
表拆分的另一个好处是单台服务器的性能毕竟有限,比如磁盘的IO。表拆分后,子表部署在不同的磁盘上(或者直接分库),可以利用多台服务器的资源,更好地支持高并发。
数据库和表划分的常用策略:范围划分:按照一个字段的区间进行划分。比如按照id,一个分区从1到10万,一个分区从10万到20万。
哈希分区:定义一个表达式,并对表达式的结果进行分区。例如,如果id是整数的模,则结果是1的分区,结果是2的分区。
业务领域划分:这个很好理解。在业务数据中选择一个适当的字段作为分区字段。比如按照公司代码,公司代码1(北京)是分区,公司代码2(天津)是分区;当然,公司名称北京/天津等字段一般不选;但是,这种分表策略不能保证平均数据。比如北京有5000万数据,天津有500万数据。
虽然表/数据库拆分看起来很美,但是也存在很多问题:跨数据库关联、分布式事务、结果集合并/排序等等,这些都是需要考虑和解决的。
我会继续分享我对Java开发、架构设计、程序员职业发展等方面的看法,希望得到大家的关注。