応用情報技術者SQLとトランザクションの詳細オリジナル・公式資料照合難易度
PostgreSQL 16で必要列をすべて含むB-tree索引を作ったが、Index Only ScanでもHeap Fetchesが多い。頻繁に更新する表で確認すべき点はどれか。
A
索引をUNIQUEにすれば、更新中の行も常に全トランザクションに可視になるか
一意性制約はトランザクションの可視性を変えない。
B
MVCC可視性を確認するため、all-visibleでないページのheap参照が必要になっていないか★ 正解
必要列が索引にあっても、可視性を索引の値だけで判断できない場合がある。visibility mapの状態も性能に影響する。
C
INCLUDEした列はSELECTで返せないので、必ず全表Scanになるか
INCLUDE列は返せる。問題は索引だけで可視性を確認できるかという別の条件である。
D
索引に全列があれば、どんな更新状態でもheap参照は仕様上0か
必要列の条件だけでなく、MVCCの可視性の条件がある。
解説
必要列が索引にあっても、可視性を索引の値だけで判断できない場合がある。visibility mapの状態も性能に影響する。
根拠資料・確認情報
対応範囲:2026年度 応用情報技術者試験/シラバスVer.7.2・科目A/B表記
資料確認日:2026-11-02
アプリ内の初回回答データ
回答データを読み込んでいます。
同じレッスンの問題
問題 1
関係R(A,B,C,D)の関数従属性はA→B、B→C、C→Aだけで、これらから導けるもの以外の非自明な従属性はない。候補キーの組はどれか。
問題 2
関係R(A,B,C)をR1(A,B)とR2(B,C)へ分解する。B→Cが成立し、共通属性BがR2のキーになる。この分解の説明はどれか。
問題 3
PostgreSQL 16のREAD COMMITTEDで、同じトランザクション内で同じSELECTを2回実行する。間に別トランザクションが対象行を変更してCOMMITした。2回目について適切なのはどれか。
問題 4
当直医A,Bがそれぞれ別行で勤務中である。2トランザクションが同じスナップショットを読み「他方が勤務中」を確認し、自分の別行を非勤務へ更新して両方COMMITした。破られた条件と現象はどれか。