デザイン学習データベース

学習Chorme設計データ

仕事が見つかった場合は、Chromeの履歴はファイルに保存されている:
%AppData%\Local\Google\Chrome\User Data\Profile 1\HistoryそれはSQLiteデータベースファイルです。

visits次のようにテーブルは、それぞれの歴史を記録します。

urls表は、各URLが繰り返され、主キーのみ、およびそのされていないvisit_countフィールドは、すべての訪問ごとのURLを記録します。

私にインスピレーションを与えます。

  1. 各Chromeの履歴に直接書き込むようにしてください、それはそれをしなかったが、ユニークなプライマリキーとして各URLに、効果的に過度のURLに起因する無駄なストレージ容量を削減します。
  2. よるurlsと、visits異なる結合機構は、より高速なクエリを達成するために。

推測Chromeはどのようです

ケースA:あなたが歴史を追加します。

  1. 更新urlsテーブルを、主キーがすでに存在する場合、単にvisit_countフィールドとlast_visit_timeフィールドを更新します。主キーが存在しない場合は、新しいレコードが作成されます
  2. 更新し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テーブルには、あまりにも多くの文字列を避ける必要があります試合。

おすすめ

転載: www.cnblogs.com/crb912/p/11244489.html