Насколько я понимаю - вы используете СУБД для хранения информации на длительный срок.Я могу предложить 2 вещи:
1.Сохраняйте информацию в хранилище ключей / значений, например Memcached, и периодически записывайте ее в RDBMS с помощью фонового процесса (задание CRON). С этим решением вы сделаете что-то подобное в своем коде приложения:
$m = new Memcached();
$m->addServer('localhost', 11211);
$m->setOption(Memcached::OPT_COMPRESSION, false);
$m->append('some_unique_id', '|' . time() . ':' . base64_encode($_SERVER['HTTP_REFERER']));
И тогда у вас будет работа CRON, выполняющая что-то вроде этого:
$m = new Memcached();
$m->addServer('localhost', 11211);
foreach($list_of_unique_ids as $uid)
{
$raw_data = $m->get($uid);
$m->delete($uid);
$uid_safe = mysql_real_escape_string($uid);
$items = explode('|', $raw_data);
$sql = array();
foreach($items as $rec)
{
if (!empty($rec))
{
list($timestamp, $ref_base64) = explode(':', $rec, 2);
$ref = base64_decode($ref_base64);
$ref_safe = mysql_real_escape_string($ref);
$sql[] = "('" . $uid_safe . "', " . (int) $timestamp . ", '" . $ref_safe . "')";
}
}
mysql_query("INSERT INTO some_table (user_id, ts, ref) VALUES " . implode(',', $sql));
}
2.Используйте более совершенное хранилище ключей / значений, такое как Redis или MongoDB, в качестве основного средства долгосрочного хранения. Просто выберите ядро базы данных с огромной пропускной способностью записи и вызовите его за день.