我有来自 onlines 表的大数据记录。 (超过4000万条记录)
现在我想从表中随时显示在线用户,但从服务器执行失败...
例如,当我上周发送上网请求时,它不起作用(因为表有很大的记录)。
这是我的示例 php 代码:
$d = $_GET['date'];
$time = time() - 60*60 * 24 * $d;
$phql = "SELECT DISTINCT aid FROM onlines WHERE time > '$time'";
那么,你有什么更好的建议吗?
Tnx。
最佳答案
使用EXPLAIN SELECT ...
查看表上定义了哪些索引。确保您查询的列已建立索引,特别是对于大型表。在本例中时间
。
您可以通过以下方式创建索引:
CREATE INDEX time_index ON onlines (time);
这应该可以加快查询速度。如果您不关心潜在的数据丢失或持久性,您可能会考虑使用内存表来避免 IO。这会显着加快查询速度,但如果服务器重新启动或 MySQL 关闭,则会清空表。
关于php - 从大记录表中获取在线用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39769792/