简体   繁体   English

MySQL查询优化100000条带有左外连接的记录

[英]mysql query optimization 100 000 records with left outer join

i have a clients table, and 100,000 records in it. 我有一个客户表,其中有100,000条记录。

And also clients has alot of related tables, where stores a related data. 客户也有很多相关表,用于存储相关数据。

My query is like this: 我的查询是这样的:

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
     )

This is only 2 joins, but my real query has 5-7 joins. 这只有2个联接,但是我的实际查询有5-7个联接。 And it's very slow with 100,000 records. 100,000条记录非常慢。 About 0.5 sec. 约0.5秒

My database is very normalized. 我的数据库非常规范化。 And it seems like i need to denormalize it now. 似乎我现在需要对其进行规范化。 Or maybe anyone can recommend a good solution ? 也许有人可以推荐一个好的解决方案?

I think you could probably use some of the inbuilt optimization techniques of Mysql in itself for joins. 我认为您可能可以使用Mysql本身的一些内置优化技术进行联接。

LEFT JOIN and RIGHT JOIN Optimization 左联接和右联接优化

如果数据库已规范化,则可以在查询中使用“常规”联接。这将大大加快速度。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM