0

説明を保存するレポートテーブルがあります

tableA

sno   | Project |name     | description      | mins |
1     | prjA    |nameA    |ABC -10% task done|  30  |
...
3000  | prjA    |nameB    |ABC -70% task done|  70  |

説明フィールドをクエリして別のテーブルに保存したい

tableB

id | valueStr | total_mins  | last_sno
1  |  ABC     | 100         | 3000

2 番目のテーブルにエントリがない場合は、デフォルト値でエントリを作成します

2 番目のテーブルにエントリがある場合、total_mins で 2 番目のテーブルを更新し、last_sno をその値 3300 にインクリメントして、次にこのテーブルにクエリを実行するときに、2 番目のテーブルから last_sno に基づいて値を取得します。

クエリ

SELCT last_sno FROM tableB where valueStr ='ABC'

the first 3 characters in the description field

SELECT max(sno), sum(mins) FROM tableA
 where sno > last_sno and description like 'ABC%'

最初のテーブルには何百万もの行があるため、最初のテーブルを sno > last_sno で検索すると、パフォーマンスが向上するはずです。

しかし、説明は、最初のsnoから最初のテーブルを照会すると、同じ数の行をスキャンすることを示しています

4

1 に答える 1