私の見方では、フィルターを使用して動的チャートを作成する場合、ユーザーがフィルター処理されたデータを要求するたびに、
新しい 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++; } } }
最初に 1 つの MySQL クエリを実行し、すべてのデータをクライアントに渡し、Javascript と d3 を使用してフィルタリングを行います。
答えは白黒ではないと思います。たとえば、一部のフィルターがほとんど要求されない場合、残りの 95% のユーザーに関連データを待機させるのは意味がない可能性があるため、フィルターは新しいデータ呼び出しを必要とします。しかし、私は本当にエッジケースについて考えています-フィルターが定期的に使用されているが、特異な状況です。このような場合、フィルタリング ロジックをフロントエンド、バックエンド、またはデータベース クエリ内に配置した方がよいでしょうか?