説明を保存するレポートテーブルがあります
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から最初のテーブルを照会すると、同じ数の行をスキャンすることを示しています