我有一个客户表,其中有100,000条记录。
而且客户端也有很多相关的表,其中存储了相关的数据。
我的查询是这样的:
SELECT COUNT(DISTINCT `clients2`.`id`)
FROM `clients2` as `clients2`
LEFT OUTER JOIN `users` as `users`
ON ( `clients2`.`user_id`=`users`.`id`
and users.status!=5
and clients2.status!=5
)
LEFT OUTER JOIN `private_data` as `privateData`
ON ( `users`.`person_id`=`privateData`.`id`
and clients2.status!=5
)
这只有2个连接,但我的实际查询有5-7个连接。而且它的速度非常慢,有100,000条记录。大约0.5秒。
我的数据库是非常规范化的。看起来我现在需要将它去规范化了。或者任何人都可以推荐一个好的解决方案?
发布于 2011-12-08 16:07:06
我认为您可以使用Mysql本身的一些内置优化技术来进行连接。
LEFT JOIN and RIGHT JOIN Optimization
发布于 2011-12-08 16:07:44
如果DB是规范化的,那么您可能会在查询中使用“普通”连接。这应该会大大加快它的速度。
https://stackoverflow.com/questions/8427897
复制相似问题