从大记录表获取在线用户

时间:2016-09-29 12:01:49

标签: php mysql

我有来自在线表的大数据记录。 (超过4000万条记录)

现在我想从表中随时显示在线用户,但是从服务器执行此操作已失败...

例如,当我发送请求在上周上线时,它不起作用(因为该表有非常大的记录)。

这是我的示例php代码:

$d = $_GET['date'];
$time   = time() - 60*60 * 24 * $d;
$phql   = "SELECT DISTINCT aid FROM onlines WHERE time > '$time'";

所以,你有更好的建议吗?

TNX。

1 个答案:

答案 0 :(得分:0)

使用EXPLAIN SELECT ...查看表格中定义的索引。确保特别针对大表,您查询的列已编制索引。在这种情况下time

您可以通过以下方式创建索引:

CREATE INDEX time_index ON onlines (time);

这应该可以加快查询速度。如果您不关心潜在的数据丢失或持久性,您可能会考虑使用内存表来避免IO。这会显着加快查询速度,但如果服务器重新启动或MySQL关闭,它将清空表。