0

私は現在、データベースに保存されているランタイム値を分析するアプリケーションに取り組んでいます (日、月、使用されたメソッドなどのフィルターの平均/中央値)。ただし、ユーザーフレンドリーなアプリケーションは、ユーザーがボタンを押した後にデータを表示するのに時間がかかりすぎてはならないことも読みましたが、大規模なデータベースに対してクエリを高速に取得する方法が思い浮かびません。ユーザーが情報を取得しようとするたびに値を再計算する必要がないように、毎日必要な値を格納するものを作成することを考えましたが、多くのフィルターを使用すると、多くの情報を格納する方法のように思えます。別の方法を理解することはできません..

これは私のSQLクエリがどのように見えるかです:

SELECT
p.processID, p.runtime, p.servername
FROM
public.process p
WHERE
(p.starttime BETWEEN 1356994800000 AND 1359414000000) AND
p.MainMethodID = '12';

編集: MainMethodID は BIGINT であり、既に "starttime" と "MainMethodID" のインデックスを使用しています。私の質問は、GUI アプリケーションの結果をより速く取得する方法があるかどうかです。これは、5 秒を超えるすべてがかなり長いように見え、前に説明したように多くのフィルター オプション (使用される方法と時間枠) があるため、すべてを計算することはできないと思うからです。 .

EXPLAIN では次の結果が得られます。

1, 'SIMPLE', 'p', 'ref', 'MainMethodID,startTime', 'MainMethodID', '8', 'const', 28128, 'Using index condition; Using where'
4

1 に答える 1

1

に複合インデックスを作成する(MainMethodId, startTime)

于 2013-04-04T07:26:40.753 に答える