高并发应用中的MySQL:尽量不要表连接

对于高并发应用中的MySQL,按照我的经验,尽量不要表连接;MySQL Optimizer在处理表连接时有时很不智能,搞出个大坑。比如这个

在需要表连接的场景,尽量把它拆解掉,这就叫做 Join Decomposition.

个人常用的办法有两个:

1.冗余

2.分成两步执行: 先查出符合条件的A表的ID,再根据这些ID使用IN字句去B表中查询。

消除表连接还有个附加好处是两个表不一定要放在同一个库里,这样你做垂直分库会比较自由。

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.