Mysql 用php显示的千行快速执行analitycs数据库

Mysql 用php显示的千行快速执行analitycs数据库,mysql,database-design,php,Mysql,Database Design,Php,我有一个有一千行的表,我想用图表显示我的前端php来创建分析 我的桌子结构是 以及我如何显示这些数据: 按用户\代理列i显示操作系统、浏览器和设备 现在我仍然使用旧的算法,循环使用for方法并解析每一行。响应和显示数据需要很长时间 有人知道我如何在网站上显示这些数据而不需要很长时间的回复吗?有什么想法吗?使用数据库结构还是我的php脚本 谢谢您。假设您将所有数据加载到PHP脚本中,并在PHP的for循环中对其进行后处理,那么您应该更改数据库查询。GROUPBY语句可能会有所帮助。当然,您需要修

我有一个有一千行的表,我想用图表显示我的前端php来创建分析

我的桌子结构是

以及我如何显示这些数据:

按用户\代理列i显示操作系统、浏览器和设备

现在我仍然使用旧的算法,循环使用for方法并解析每一行。响应和显示数据需要很长时间

有人知道我如何在网站上显示这些数据而不需要很长时间的回复吗?有什么想法吗?使用数据库结构还是我的php脚本


谢谢您。

假设您将所有数据加载到PHP脚本中,并在PHP的for循环中对其进行后处理,那么您应该更改数据库查询。GROUPBY语句可能会有所帮助。当然,您需要修改脚本以处理新数据。重新访问数据库结构也是一个好主意。更好的方法可能不是将整个用户代理字符串保存在一列中,而是使用多个列

之前的示例:

$data = $db->query('SELECT * FROM table');
for ($i = 0; $i <= $data->max(); i++) {
  $row = $data->getRow($i);
  postprocessRow($row); /* $sum += 1; */
}
示例如下:

$data = $db->query('SELECT count(*) as weight, * FROM table GROUP BY user_agent');
for ($i = 0; $i <= $data->max(); i++) {
  $row = $data->getRow($i);
  postprocessRowWeighted($row); /* $sum += $row['weight']; */
}

您是在说一个PHP for循环,用于收集用于演示的数据,还是说一个MySQL for循环,用于准备返回前端PHP的数据?如果是前者,那么您的问题就不是数据库问题,而是演示文稿问题。我投票将这个问题作为离题题来结束,因为它与数据库管理无关。我说的是php循环。解析和显示演示文稿的数据需要很长的执行时间。如何将其移动到mysql循环中?或者你知道如何让它更快吗?你的疑问是什么?也许是团体?但是,如果您有大量数据,您可能需要重新考虑您的模式或使用cache.schema或使用chache ok。谢谢你的信息。真的很有帮助