对于高并发应用中的MySQL,按照我的经验,尽量不要表连接;MySQL Optimizer在处理表连接时有时很不智能,搞出个大坑。比如这个。
在需要表连接的场景,尽量把它拆解掉,这就叫做 Join Decomposition.
个人常用的办法有两个:
1.冗余
2.分成两步执行: 先查出符合条件的A表的ID,再根据这些ID使用IN字句去B表中查询。
消除表连接还有个附加好处是两个表不一定要放在同一个库里,这样你做垂直分库会比较自由。
对于高并发应用中的MySQL,按照我的经验,尽量不要表连接;MySQL Optimizer在处理表连接时有时很不智能,搞出个大坑。比如这个。
在需要表连接的场景,尽量把它拆解掉,这就叫做 Join Decomposition.
个人常用的办法有两个:
1.冗余
2.分成两步执行: 先查出符合条件的A表的ID,再根据这些ID使用IN字句去B表中查询。
消除表连接还有个附加好处是两个表不一定要放在同一个库里,这样你做垂直分库会比较自由。