First of all, you may need to rethink MySQL. If you want to keep staying in RDBs you may want to research postgres, and with some optimization, it can handle the number of rows. On the other hand if you open to switch to NoSQL, then i recommend elastic search. It can handle this kind of data very well.
If you chose to stay with postgres/mysql. Then you can restructure your schema by separating the visitor
data (unique users) from the visited_pages
data as follows:
visitors
- id
- ip_address
- device
- first_visit (created_at)
- latest_visit (updated_at)
visited_pages
- id
- page_title
- page_route
- first_visit (created_at)
- latest_visit (updated_at)
page_visit
- id
- visitor_id
- page_id
- visited_at (created_at) //no need for updated at
The largest table will be the last one and it won't contain much data. and you will not have to use the same data like route, page title, ip address every time.