学習Chorme設計データ
仕事が見つかった場合は、Chromeの履歴はファイルに保存されている:
%AppData%\Local\Google\Chrome\User Data\Profile 1\History
それはSQLiteデータベースファイルです。
visits
次のようにテーブルは、それぞれの歴史を記録します。
urls
表は、各URLが繰り返され、主キーのみ、およびそのされていないvisit_count
フィールドは、すべての訪問ごとのURLを記録します。
私にインスピレーションを与えます。
- 各Chromeの履歴に直接書き込むようにしてください、それはそれをしなかったが、ユニークなプライマリキーとして各URLに、効果的に過度のURLに起因する無駄なストレージ容量を削減します。
- よる
urls
と、visits
異なる結合機構は、より高速なクエリを達成するために。
推測Chromeはどのようです
ケースA:あなたが歴史を追加します。
- 更新
urls
テーブルを、主キーがすでに存在する場合、単にvisit_countフィールドとlast_visit_timeフィールドを更新します。主キーが存在しない場合は、新しいレコードが作成されます - 更新し
visti
、新しいレコード、URLフィールド人口テーブルをurls
テーブルの主キーを。
ケースB:ユーザーは全体の歴史を照会します。
visits
左のリンクurls
:
SELECT u.url, u.title, v.visit_time, u.visit_count
FROM visits v LEFT JOIN urls u on v.url=u.id
ケースC:ユーザーがタイトルなど、特定の履歴を照会「あなたが知っている」この文字列が含まれています。
SELECT u.url, u.title, v.visit_time, u.visit_count
FROM visits v LEFT JOIN urls u on v.url=u.id
WHERE u.title LIKE '%你就知道%'
問題があり、このような状況はより速く、サブクエリを使用する必要がありますか?などの開始など、より多くのデータ、専用ケースurls
、次に照会するIDに基づいて、対応するIDを取得するには、テーブル、visits
テーブルには、あまりにも多くの文字列を避ける必要があります試合。