» »

Optimizacija querya

Optimizacija querya

mmaestro ::

Pozdravljeni imam sleceč problem, ko poženem query (glej spodaj), mi stvar dela ful dolgo, problem je predvsem, ker je ful zapisov v tabeli nekje okrog miljona, tako da me zanima, če se da query kako optimizirat.

Ta query se mi zdi, da ni čisto delujoč, ker sem ga nekaj popravljal, sam trenutno te verzije nimam tu, zanima me predvsem to
INSERT INTO Data_Temp (Date, Value)
SELECT (@TimeMax, AVG(ParsedValue)
FROM Data_Parsed
WHERE (ParsedValueType = @ValueType) AND (ParsedDateTime BETWEEN (@TimeMin AND @TimeMax))

kako bi se dalo to optimizirat, da bi delovalo bolj hitro oz če kdo pozna še kako drugo rešitev.


celotna store procedura (nedelujoča se mi zdi:) )
CREATE PROCEDURE sp_InsertValuesToDataTemp @ValueType varchar(38), @TimeFrom Datetime, @TimeTo Datetime, @Minutes int
AS

TRUNCATE TABLE Data_Temp

DECLARE @TimeMin Datetime, @TimeMax Datetime

SET @TimeMin = @TimeFrom
SET @TimeMax = DATEADD(minute, @Minutes, @TimeFrom)


WHILE (@TimeMax < @TimeTo)
BEGIN
INSERT INTO Data_Temp (Date, Value)
SELECT (@TimeMax, AVG(ParsedValue)
FROM Data_Parsed
WHERE (ParsedValueType = @ValueType) AND (ParsedDateTime BETWEEN (@TimeMin AND @TimeMax))

SET @TimeMin = @TimeMax
SET @TimeMax = DATEADD(minute, @Minutes, @TimeMin)

END
GO

LP

darkolord ::

Uporabljaš indexe? Execution plan si pogledal?

Načeloma lahko probaš pri WHERE zamenjat vrstni red, to se zna poznat, če je prvi izraz večkrat true (konkretno, če je ParsedValueType v tabeli povečini enak)

Zgodovina sprememb…

  • spremenilo: darkolord ()

mmaestro ::

Ja indexe uporabljam. Sem se menil z enim pa mi je reku, da sta funkciji AVG in BETWEEN ful počasni, kako naj pol to drugače napišem ok between lahko nadomestiš z (ParsedDateTime < @TimeMax) AND (ParsedDateTime > @TimeMin AND), sam ne vem pol če to kaj hitrejše dela.

Exectuin plan, kaj naj bi to blo?

frudi ::

glede na to, da na začetku sprazniš Data_Temp tabelo, zbriši indexe z nje in jih na koncu na novo postavi. enako velja za morebitne triggerje.
če imaš clustered index na Data_Parsed kje drugje, ga probaj postavit na ParsedDateTime stolpec (če je to možno in smiselno glede na ostalo funkcionalnost baze).
1ACDoHVj3wn7N4EMpGVU4YGLR9HTfkNhTd... in case I've written something useful :)

snow ::

Random mutation plus nonrandom cumulative natural selection - Richard Dawkins


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Optimizacija MySQL - query / tabela

Oddelek: Programiranje
443915 (2503) MrStein
»

C# visual studio SQL problem

Oddelek: Programiranje
72084 (1662) Apple
»

[c#] Majhen problemček

Oddelek: Programiranje
10998 (806) darkolord
»

C# INSERT statment ne vpise podatkov

Oddelek: Programiranje
111203 (1077) darkolord
»

Statistika dijakov, pomoc

Oddelek: Programiranje
211777 (1261) Mitja Bonča

Več podobnih tem