我的看法是,在使用过滤器构建动态图表时,每次用户请求过滤数据时,我都可以
执行一个新的 MySQL 查询,并使用 MySQL 进行过滤。
SELECT date, SUM(IF( `column` = `condition`, 1, 0)) as count ...
执行一个新的 MySQL 查询,并使用服务器端语言(在我的例子中是 PHP)进行过滤。
function getData(condition) { $resultSet = mysqli_query($link, "SELECT date, column ... "); $count = 0; while ($row = mysqli_fetch_assoc($result_set)) { if ($row['column'] == 'condition') { $count++; } } }
最初执行单个 MySQL 查询,将所有数据传递给客户端,并使用 Javascript & d3 进行过滤。
我希望答案不是非黑即白。例如,如果某个过滤器几乎没有被请求,那么让其他 95% 的用户等待相关数据可能没有意义,因此过滤器将需要一个新的数据调用。但我真的在考虑边缘情况 - 过滤器经常使用但特殊的情况。在这种情况下,将过滤逻辑放在前端、后端还是在我的数据库查询中更好?