[英]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本身的一些内置优化技术进行联接。
如果数据库已规范化,则可以在查询中使用“常规”联接。这将大大加快速度。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.