私は簡単なクエリを実行したい単純なデータベースを持っています。実行に時間がかかるSQLクエリの最適化
これらは、私のデータベーステーブルの列です:
- は、タイムスタンプ
- 値
- をexternal_id検証
- 理由データム
- UUR
- のAf
ronden列は次のとおりです。
external_id
一定メートルTimestamp
のIDが何もValue
は、そのメーターの値がValidation
がちょうどyesまたはnoではありませんんですReason
ちょうどvarchar
va理由Datum
とLUEはAfronden
が
私は最高のを取得することを目標となった実行したいクエリを丸めるために必要なカラムがあることをその時の日付
Uur
されています各日の値の合計の最低値。 あなたが見ているように、毎日が数時間で分けられているか、チェックしなければならないか、データムは同じか変更され、その合計値が得られます。
これが私のクエリです:唯一の44000行が処理された22分後にした後
Declare @totaal bigInt
Declare @tussentotaal bigint
Declare @Datum varchar
Declare @datumverschil varchar
Declare @hoogste bigint
Declare @laagste bigint
Declare @teller bigint
Declare @tellettotaal bigint
set @tellettotaal = (select count(*) from cresent_opdracht_de_proost_wim.dbo.[test])
Set @teller = 1
SET @datum = (Select top(1) datum
from cresent_opdracht_de_proost_wim.dbo.[test]
order by afronden asc)
Set @datumverschil = @Datum
set @tussentotaal = 0
set @totaal = 0
set @hoogste = 1775000006856
set @laagste = 1775000006856
while @teller <= @tellettotaal
begin
if @teller = 1
Begin
set @tussentotaal = (select top(1) value
from cresent_opdracht_de_proost_wim.dbo.[test]
order by afronden asc)
if @tussentotaal != 0
begin
Set @tussentotaal = @tussentotaal/100
end
End
Else
begin
SET @tussentotaal = (Select top(1) value
from (select top (@teller) *
from cresent_opdracht_de_proost_wim.dbo.[test]) q
order by afronden desc)
Set @tussentotaal = @tussentotaal/100
end
if @tussentotaal != 0
Begin
Set @totaal = @totaal + @tussentotaal
end
SET @teller= @teller + 1
Set @datumverschil = (Select top(1) datum
from (select top (@teller) *
from cresent_opdracht_de_proost_wim.dbo.[test]) q
order by afronden desc)
if @datum != @datumverschil
Begin
if @totaal >= @hoogste
begin
set @hoogste = @totaal
end
if @totaal <= @laagste
begin
if @totaal != 0
Begin
set @laagste = @totaal
end
end
Set @datum = @datumverschil
set @totaal = 0
select @teller As teller
end
end
Select @hoogste As hoogste
Select @laagste As laagste
。
クエリを最適化する方法を知っている人はいますか?
そのデータベースとテーブルを作成したMySQLを表示します。特に、あなたが持っているインデックスを表示します。 –
RBARコードが何をしているのかを最初に把握する必要がないので、サンプルデータと望ましい結果を掲載する方が良い。答えはおそらくセットベースの方法でそれを書き換えることでしょう。また、どのバージョンのSQL Server? –
私は最初に写真を挿入したかったが、私の評判は十分ではなかったので、私はそれらをインターネットにアップロードした。私のデータベースはcsvによってcreadedされ、これはデータベースの外観です。 – Wimdp