Avatar billede Lasse Novice
04. oktober 2004 - 23:33 Der er 3 kommentarer og
1 løsning

SP tager laang tid, hvorfor?

Jeg har foelgende som tager ca 20 sek at udfoere:


DECLARE @IdPerson AS INT
SELECT @IdPerson = 14
DECLARE @IdPart AS BIGINT
DECLARE @IdPartSelectedModel AS BIGINT
DECLARE @IdSameAsSelected AS BIGINT
DECLARE @SkillLevel AS INT

SELECT     @IdPartSelectedModel = IdPartSelectedModel, @IdSameAsSelected = IdsameAs, @SkillLevel = SkillLevel
FROM     Persons pe
    LEFT OUTER JOIN parts pa ON pa.IdPart = IdPartSelectedModel
WHERE     IdPerson = @IdPerson

--BEGIN TRANSACTION

SELECT     TOP 1 pa.IdPart
FROM     Parts pa
    INNER JOIN Projects pr ON pr.IdProject = pa.IdProject -- All parts belong to a project
    LEFT OUTER JOIN Persons pe ON pa.IdPart = pe.IdPartSelectedModel -- Not all parts are selected
    LEFT OUTER JOIN ManufacturerParts mp ON pa.IdPart = mp.IdPart -- Not all parts have Manufacturer part codes attached
    LEFT OUTER JOIN ClientCodes cc ON pr.IdClient = cc.IdClient AND pr.IdProjectType = cc.IdProjectType AND cc.ClientCode = pa.ClientCode
WHERE     StartDate IS NOT NULL AND -- project started
    EndDate IS NULL AND -- project not finished
    IdPicture > 2 AND -- sort away no picture
    IdGeometry IS NULL AND -- no geometry already
    IdProcessInstruction IN (4, 16) AND -- either normal or force
    pa.IdDifficultyLevel > 1 AND -- has to have a difficultyLevel
    (IdGeometryForce IS NULL OR IdProcessInstruction = 16) AND
    IdPersonLockModel IN (@IdPerson, 0) AND -- remove already selected clientcodes except the one this person is doing
    IdSameAs NOT IN -- Herfra
    (
        SELECT     IdSameAs
        FROM     Parts
        WHERE     IdSameAs > 0 AND
            IdGeometry > 0 AND
            IdSameAs <> @IdSameAsSelected
    ) AND -- Tilher
    pa.IdPart NOT IN
    (
        SELECT pa.IdPart
        FROM Parts pa
        INNER JOIN ManufacturerParts mp ON pa.IdPart = mp.IdPart
        WHERE ManufacturerPartCode IN
        ( -- Select all ManufacturerPartCode's that have geometry attached
            SELECT     ManufacturerPartCode
            FROM     ManufacturerParts mp
                INNER JOIN Parts pa ON pa.IdPart = mp.IdPart
            WHERE     IdGeometry IS NOT NULL
        ) OR
        ManufacturerPartCode IN
        ( -- select parts already been taken by others...
            SELECT     ManufacturerPartCode
            FROM    ManufacturerParts mp
                INNER JOIN Persons pe ON IdPart = IdPartSelectedModel
            WHERE     IdPerson != @IdPerson
        ) AND
        pa.IdPart <> @IdPartSelectedModel
    ) AND
    pa.IdDifficultyLevel&@SkillLevel&PartsFilter > 0 -- select only a part where persons skill_level are sufficient
    ORDER BY IdPartSelectedModel desc, pr.Priority desc, pa.IdPriority asc, pa.IdDifficultyLevel desc


Hvordan kan jeg finde ud af hvad der tager lang tid, og HVORFOR?

Hvis jeg sletter --herfra --tilher, saa tager det kun 1 sek. Jeg har et index paa idsameas og idgeometry
Avatar billede veronica Nybegynder
05. oktober 2004 - 10:00 #1
Jeg vil tro, du har behov for et index på din Pars tabel. Prøv fx med

CREATE INDEX idx_Parts ON Parts ( IdSameAs, IdGeometry )
Avatar billede Lasse Novice
05. oktober 2004 - 19:04 #2
Faktisk saa har jeg ogsaa stillet spg. paa et andet forum, hvor der skete en del fremskridt.

http://www.sql-server-performance.com/forum/topic.asp?TOPIC_ID=5717
Avatar billede Lasse Novice
05. oktober 2004 - 19:05 #3
Eftersom der er kommet svar andetsteds, saa lukker jeg spg.
Avatar billede veronica Nybegynder
06. oktober 2004 - 10:18 #4
hvor er det fedt at du sætter pris på at andre bruger tid på at hjælpe dig !
:(
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Ringkjøbing Landbobank – Nordjyske Bank

Forretningsudvikler til procesoptimering

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Ingeniør til Satellitkommunikation

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger elementleder til System sektionen i Hvidovre