350GBPCで約4,000万行のデータベースを実行しています。
SQL Server 2014、Win7、AMD 8350 @ 4.8GHZ、16 GBのRAM、500 GB SSD(データベースは、500 MB / 500 MBの読み取り/書き込みのスループットで、独自の500 GB SSDでホストされています)。
データベースは更新されていません。分析/読み取りを行っています。少数の作成をindexes、任意のjoin、count(*)など、私の目的のためにokです1分未満を取ります。私はデータに対していくつかのクエリを実行しており(単一の結合クエリを実行した後、40〜50回実行すると遅くなります)、1分かかった呼び出しが20分後にまだ実行されています。
私はシステムリソースを注意深く監視しておりSSD、クエリの開始時にキックインを確認できます。クエリが20〜30秒間読み取り121kB/second、次に次の20分間読み取ります。これは、CPUの問題やディスクの問題ではありません。私はRAMの容量に制限がありますが、データベースを最初にロードしたときに呼び出しは正常に実行されましたが、25分後、何も実行されません。
事実上、データベースにクエリを実行することはできませんSELECT。基本的なステートメントでさえ、呼び出しには非常に時間がかかります。インデックスの再構築と統計の更新を試みましたが、違いはありません。
私はこれについて多くの経験を持っていないので、SQLクエリが正しくない可能性があります。その場合、エラーが発生するか、または結果が0で実行を終了する可能性がありますが、どちらも発生しません。
私がやろうとしていることは、テーブルACALLSに基づいて、時間の5秒前に「TypeID」のすべてのインスタンスをカウントすることです。
SELECT ACALLS.StartTime, ACALLS.Time, ACALLS.ServerIP, ACALLS.SRVR, ACALLS.calls, ACALLS.TOKEN, COUNT(TypeID) as ExecRate
FROM ACALLS
INNER JOIN MAINVIEW ON
MainView.TimeStamp BETWEEN ACALLS.StartTime and DATEADD(ss,-5,ACALLS.StartTime)
WHERE DATEPART(hour,MainView.TimeStamp) BETWEEN 10 and 13 and
CAST(MainView.TimeStamp as date) = '2015-12-09' and
MainView.TypeID = '123456789'
GROUP BY Acalls.STartTime, ACALLs.TIME, ServerIp,SRVR, ACALLS.CALLS, ACALLS.TOKEN
ORDER BY Acalls.StartTime

