Firefoxは訪問回数を記録している

places.sqliteに入ってるmoz_historyvisitsというテーブルを見ればわかると思うけど、Firefoxはユーザーがいつどこのサイトに訪問したのか記録している。

f:id:nextugi:20150730182730p:plain

こういうデータを解析すると面白いことがわかりそうなのだが、残念ながら小生は統計にもSQLにも詳しくないので、あまり複雑なことができない。とりあえず「よくアクセスするページのランキング」を作ってみた。

SQLを勉強中で、なおかつFirefoxユーザーであるなら、実際のデータを見てみると色々参考になるかも。

-- よくアクセスするページのタイトルとURLを訪問回数順に100件表示
SELECT
  h.visit_count, p.title, p.url
FROM
  moz_places AS p
INNER JOIN
  (
     SELECT
       place_id, count(place_id) AS visit_count
     FROM
       moz_historyvisits
     GROUP BY
       place_id
     ORDER BY
       count(place_id) DESC
     LIMIT
       100
  ) AS h
ON
  p.id = h.place_id
ORDER BY
  h.visit_count DESC;

SQLを実行するツールだけど、いくつか候補がある。FirefoxのアドオンであるSQLite Managerか、単体で動くDB Browser for SQLiteが単純でいいと思う。もっと豪華なやつはたくさんあるけど、さしあたりはこの2つで間に合う。

ちなみに上のコードだけど、SELECTを1個にすると微妙に重いので、サブクエリーを使っている。いや、最適化とか全然知らないんだけどさ、たぶんmoz_historyvisitsが大きすぎるので早いうちに集約しておかないと連結処理に時間がかかるんだと思う。