2017-08-22 8 views
-2

私は80テーブルを持っており、80テーブルの中で最も高い価格を持つ人をフィルタリングしたいと思います。私はこのクエリの使用を計画しています:80+テーブルで最大値を見つける効率的な方法

SELECT id 
FROM (SELECT id, price FROM T1 WHERE price = (SELECT MAX(price) FROM T1) 
    UNION 
    SELECT id, price FROM T2 WHERE price = (SELECT MAX(price) FROM T2) 
    UNION 
    SELECT id, price FROM T3 WHERE price = (SELECT MAX(price) FROM T3) 
    ) AS M 
ORDER BY price DESC 
LIMIT 1 

しかし、私はそれが効率的ではありません。別の方法はありますか?ありがとうございました

+6

クライアント/年/地域ごとのテーブルは、DB設計が不良であることを示します。私はあなたのスキーマを再考することをお勧めします。 – lad2025

+3

シンプル。 80台のテーブルがありません。 – Strawberry

答えて

1

私はこれがずっと速いと思います。

SELECT id, price FROM t1 
UNION SELECT id, price FROM t2 
UNION SELECT id, price FROM t3 
ORDER BY price DESC 
LIMIT 1 
関連する問題