いくつかの計算を行うために使用するデータ テーブルがあります。計算後の結果のデータセットは次のようになります。
+------------+-----------+------+----------+
| id_process | id_region | type | result |
+------------+-----------+------+----------+
| 1 | 4 | 1 | 65.2174 |
| 1 | 5 | 1 | 78.7419 |
| 1 | 6 | 1 | 95.2308 |
| 1 | 4 | 1 | 25.0000 |
| 1 | 7 | 1 | 100.0000 |
+------------+-----------+------+----------+
一方、計算結果を分類するために使用される一連の範囲を含む他のテーブルがあります。範囲テーブルは次のようになります。
+----------+--------------+---------+
| id_level | start | end | status |
+----------+--------------+---------+
| 1 | 0 | 75 | Danger |
| 2 | 76 | 90 | Alert |
| 3 | 91 | 100 | Good |
+----------+--------------+---------+
計算を行うときに、対応する「ステータス」列を各値に追加するクエリを実行する必要があります。現在、次のフィールドを計算クエリに追加することができます。
select
...,
...,
[math formula] as result,
(select status
from ranges r
where result between r.start and r.end) status
from ...
where ...
それは正常に動作します。しかし、行数が多い (200K 以上) と、計算クエリが遅くなります。
私の質問は次のとおりです。そのサブクエリを実行せずにその「ステータス」値を見つける方法はありますか?
以前に似たようなことに取り組んだ人はいますか?
ありがとう