私は現在、他の人が使っているビューで2つのテーブルを照会しています。私はクエリを構築するにはいくつかの異なる方法を試しましたが、私が得られる最も良い時は値を返すのに10分から15分です。クエリは次のとおりです。1つのテーブルの列から2つの値をクエリし、別のテーブルに結合しますか?
SELECT a.unit_location_id, a.location_name, a.serial_number, a.unit_name,
a.rating, b.max_number, c.min_number
FROM details a
JOIN (SELECT serial_number, setting_value AS max_number
FROM settings WHERE setting_name = 'max number') b ON a.serial_number = b.serial_number
JOIN (SELECT serial_number, setting_value AS min_number
FROM settings WHERE setting_name = 'min number') c ON a.serial_number = c.serial_number
WHERE b.max = c.min;
質問を高速化できるか、何が欠けていますか?
統計情報、分析、テーブル構造、インデックスをテーブルに用意することはできますか? –
私は共有できる統計情報を得るために取り組んでいます。テーブルは2つの異なるスキームになっています。それらは同じ索引ではなく、serial_numberは新しい表の索引ですが、古い表の索引ではありません。これらは大きなテーブルで、詳細テーブルには30以上の列があります。設定は新しいデータベース設計を使用していますが、列数は少なく、各serial_numberには数百のレコードが使用されます。詳細クエリーが秒単位で返され(20未満)、設定は少し遅くなります(約1分)。それは、時間が10分を超えてしまうエラー(最大=最小)を探してテーブルを結合するときです。 – David