mysql查询优化带有左外连接的100 000条记录

时间:2011-12-08 08:02:38

标签: mysql optimization normalization

我有一个客户表,其中有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个连接。而且它有10万条记录非常慢。大约0.5秒

我的数据库非常规范化。似乎我现在需要对它进行反规范化。 或者也许有人可以推荐一个好的解决方案

2 个答案:

答案 0 :(得分:2)

我认为你可能会使用一些内置的Mysql优化技术进行连接。

LEFT JOIN and RIGHT JOIN Optimization

答案 1 :(得分:1)

如果数据库已规范化,您可以在查询中使用“普通”连接。 这应该会加速它。