1

何百万ものレコードを持つ顧客テーブルがあります。お客様

id | name | ..... 

注文テーブルもあります

id | custID | orderDate | ....

30 日以上注文していない人をすべて見つける必要があります。これには、注文したことがない人も含まれている必要があります。

select name,customer.id from customer where id in 

(select custID from orders where datediff(curdate(),orders.orderDate) > 30 )

union

select name,customer.id from customer  left join orders on customer.id = orders.custID where orders.id is null

クエリを最適化するにはどうすればよいですか?

4

2 に答える 2

1

これを試してみてください

Select Customer.Custid,
Customer.name
from Customer
left join orders on 
customer.custid = orders.custid and
datediff(getdate(),orders.orderdate)>30)

where 
orders.id is null
于 2013-07-26T10:05:03.087 に答える