php - 从大记录表中获取在线用户

标签 php mysql

我有来自 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/

相关文章:

mysql - 从表中删除每个重复值之一,哪一个是正确的 DELETE 语句?

php - 使用 PhantomJS 创建用于 PDF 创建 (PHP) 的 HighCharts 图表服务器端 - 导致 PHPs exec() 的退出代码 11;

php - isset() 的快捷方式和赋值

php - while 从表单中循环 $_post

php - Mysql日期范围查询只检查日期,不检查月份和年份

java - 从 Mysql 数据库填充 JFreechart TimeSeriesCollection?

php - PHP 中的 MySQL 查询不返回真实结果

PHP PDO : charset, 设置名称?

php - Python 服务器页面实现

php - MySQL如何从年份(参数)、weekOfYear(参数)、时间(数据库)和dayofweek(数据库)创建时间戳?