私は大きな MySQL テーブルを持っていますが、適切にインデックスが作成されていても、クエリごとに 1 秒かかる場合があります (あまり聞こえませんが、何千ものサーバーで実行されます)。現在、4 つのクエリを実行して、95 パーセンタイルのインバウンド、95 パーセンタイルのアウトバウンド、および両方の合計を取得しています。
クエリ 1: 95 パーセンタイル行を取得するための行数を取得するには
SELECT round(count(*)*.95 FROM traffic WHERE server_id = 1;
クエリ 2&3 95 パーセンタイルを取得するには
SELECT inbound FROM traffic WHERE server_id = 1 ORDER BY inbound ASC LIMIT {95th},1
SELECT outbound FROM traffic WHERE server_id = 1 ORDER BY outbound ASC LIMIT {95th},1
クエリ 4 トラフィックの合計を取得する
SELECT sum(inbound+outbound) FROM traffic WHERE server_id = 1;
これらを組み合わせる方法を考えてみませんか?カウントに基づいて特定の行を選択することによって計算される 95 パーセンタイルを取得する必要があるため、方法を考えることに挑戦しています。たとえば、10000行ある場合、昇順に並べ替えて9500行目を選択します。