IE8の履歴の在処(その2)構成
たぶんこんなものじゃないかなぁという仮説です。
親のindex.datはurl+更新日時をユニークキーにタイトル、最終表示日時や利用回数を管理してます。
一方、サブフォルダのindex.datはUIの履歴バーや履歴フォルダ(shell:history)で「日付順に表示」するために後から作ったものです。
親のindex.datだけでは最終表示日時しかないので、「日付順に表示」することができません。表示単位ごとにindex.datが必要なのです。※1
各曜日のindex.datは週末(日曜末)に各週のindex.datに統合集約されます。
また、「ページを履歴で保持する日数」を超えたサブフォルダは削除されます。
一方、親のindex.datは成長を続け、16,187,392 バイトになると、新たな履歴の記録を停止します。※2
インターネットオプションで履歴を削除すれば、新たな履歴の記録が再開しますが、その場合は、過去の履歴がすべて消えます。
履歴バーや履歴フォルダから必要性の低い履歴を削除すれば、index.datからは消えませんが、EnumUrls()などからは消えます。つまり、論理的には削除され、スペースが再利用されるようです。
EnumUrls()に最終表示日時が「ページを履歴で保持する日数」を超えた履歴がないことから、最終表示日時が「ページを履歴で保持する日数」を超えた履歴は論理的には削除され、スペースが再利用されるようです。
※1
歴史的には、キャッシュ、履歴、クッキー、ユーザ別などが物理的に1つのindex.datに入っていたようです。
履歴はVisited:、ユーザ別はusername:、日付順履歴はyyyymmddyyyymmdd:などのプリフィックスをURLに付けて、論理的に分けて使っていたようです。
それがセキュリティなどの理由で別ファイルに分けられたようです。
※2
http://support.microsoft.com/kb/907479/ja
「Internet Explorer 6 を使用して Web サイトにログオンすると、エラー メッセージ "ページを表示できません" が表示される」