に参加し、私は、次のサブクエリがありますインナーとの相関サブクエリの改善、パフォーマンスが
SELECT
b.state,
b.city,
count(b.state) as totalCount,
sum(cast(replace(b.annual_prod, ',','.') as decimal)) AS annualProd,
(
SELECT count(size_k)
FROM opentable_clean a
WHERE a.state = b.state
AND a.city = b.city
AND cast(replace(a.size_k, ',','.') as decimal) >= 20
GROUP BY a.state, a.city
) as Above20k
FROM opentable_clean b
GROUP BY b.state, b.city
ORDER by annualProd DESC;
これは動作しますが、クエリは非常に非効率的であり、基本となるテーブルのサイズ与えられた長い時間がかかります。内部結合を使用するとパフォーマンスが向上すると思っていますが、動作するものを試すことができませんでした。
私はSQLの新機能として、どんな提案も役に立ちます。
あなたの文字列(特に 'a.size_k')、およびその型変換&文字列操作として数値を格納していることが表示されますあなたの内側の 'where'節はSARG可能ではない可能性が高いです。数値データを適切に保存するためにテーブルを修正できますか? – alroc
どのDBMSを使用していますか? Postgres?オラクル? –
私はpostgresを使用しています – user3003374