ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

時間がかかるSELECT文の最中に、そのSELECT文の条件にヒットするINSERT&コミットされた場合どうなる?

結果: INSERTデータはSELECTの結果に含まれない。
SCN(System Change Numberだったか?)がSELECT文発行時に確定するので、INSERTとかで後から追加されたデータは、SELECT文で確定したSCNより新しくなるので、そいつは無視されるという仕組みらしい。
しっかし、そんなことOracle Master的には常識っぽいのだが、一から勉強し直しかもなぁ。。
ところで、インデックスが効いている中で、時間がかかるSELECT文って意外と実現するのが大変でした。
とりあえず100万件くらいデータ件数があれば、SELECT COUNT(*) FROM HOGE; でイケるかと思ったんですが、全然。1秒以下で終わってしまいます。
そこでデータ件数を500万件に増やし、かつ、SELECT COUNT(*) FROM HOGE h1, HOGE h2 WHERE h1.key = h2.key; とかやって、無理やり時間かかるようにしました。(30秒くらい)
つうか、もっといいやり方ないもんかねぇ。