テーブル User とテーブル Order があり、100 件を超える注文をしたユーザーの名前を検索したい場合は、次のようなクエリを実行できます。
SELECT U.name
FROM User U
WHERE 100 < (
SELECT COUNT(*) FROM Orders O
WHERE O.uid=U.uid
)
相関サブクエリのため、これは低速です。
したがって、以下のように各ユーザーが行った注文数を含むビューを作成することで最適化できると思います
View UserOrderCount
uid orderCount
0 11
1 108
2 100
3 99
4 32
5 67
次に、クエリははるかに簡単です。
SELECT U.name
FROM User U, UserOrderCount C
WHERE 100 < C.orderCount And U.uid=C.cid;
しかし、これにはさらに時間がかかることが判明しました。理由がわかりません...これについていくつかの光を当ててください、事前に感謝します!
編集:
ビューの作成方法は次のとおりです。
CREATE VIEW UserOrderCount
AS
select U.uid, count(*) AS orderCount
from User U, orders O
group by U.uid;