非常慢的查询来查找没有关系的所有记录
Very slow query to find all records without a relationship
我试图找到 没有 的所有 users
有 orders
.
到目前为止,我已经尝试了以下方法:
select * from `users` where not exists
(select * from `orders` where `users`.`id` = `orders`.`user_id`)
我也试过以下方法:
select users.*, count(distinct orders.reference) as orders_count from `users`
left join `orders` on `users`.`id` = `orders`.`user_id`
group by `users`.`id` having orders_count = 0
但是,两者都是非常慢的 运行 查询。大约有5000个客户和30,000多个订单。有更有效的方法吗?
您需要将子查询限制为仅查看 user_id。还要确保 user_id 已编入索引。
Alter table orders add index(user_id)
Select * from users where id NOT IN(select user_id from
orders)
我试图找到 没有 的所有 users
有 orders
.
到目前为止,我已经尝试了以下方法:
select * from `users` where not exists
(select * from `orders` where `users`.`id` = `orders`.`user_id`)
我也试过以下方法:
select users.*, count(distinct orders.reference) as orders_count from `users`
left join `orders` on `users`.`id` = `orders`.`user_id`
group by `users`.`id` having orders_count = 0
但是,两者都是非常慢的 运行 查询。大约有5000个客户和30,000多个订单。有更有效的方法吗?
您需要将子查询限制为仅查看 user_id。还要确保 user_id 已编入索引。
Alter table orders add index(user_id)
Select * from users where id NOT IN(select user_id from
orders)