Jag har ett problem som någo kanske kan reda ut för mig. Hur många rader handlar det om? Det kan vara bra att öka storleken på din tempdb lite, det kan vara så att den gör en automatisk storleksförändring av tempdb som tar lite tid. I det fall jag testa blir det bara 3 rader... Är det vekrligen exakt samma SELECT som tar 10 ms när den körs för sig? Japp... Jag gjorde en exakt kopia på SP och då gick det fortare i den andra... Fattar ingenting Om du säger att insert tar längre tid är det väl kanske tvärt om. Det är extratid för att just uppdatera de index som tabellen har. Jag löste det med att använda declare istället. Tack för hjälpen...Problem med temporära databaser i SP
Jag skapar en temporr tabell i en SP som jag sedan fyller med information från en SELECT-sats.
SELECT-satsen i sig har bara 10 ms men när jag gör INSERT i den temporära tabellen så tar det upp mot 700 ms. Vad beror detta på och hur skall jag lösa det. I sp använder jag denna tabell flera gånger och ändå går det fortare att hämta in SELECT-satsen varje gång men skulle vilja veta vad detta beror på.
Rätt irriterande... :(
Ser ut enligt nedan
CREATE TABLE #TempqPartActiveStudent
(
tStudentId int,
tPartId int,
sName nvarchar(200),
bActive bit,
sFrom char(20),
sTo char(20),
activePart bit,
fromClass char(20),
toClass char(20),
activeClass bit,
idNum int identity(1,1)
)
INSERT #TempqPartActiveStudent
SELECT dbo.tStudent.tStudentId, dbo.tPart.tPartId, dbo.tPart.sName, dbo.tPart.bActive,
dbo.tPartAccessDefault.sFrom, dbo.tPartAccessDefault.sTo,
dbo.tPartAccessDefault.bActive AS activePart, dbo.tClassPartAccess.sFrom AS fromClass,
dbo.tClassPartAccess.sTo AS toClass,
dbo.tClassPartAccess.bActive AS activeClass
FROM dbo.tClass INNER JOIN
dbo.tTeacherGroupe ON dbo.tClass.tTeacherGroupId =
dbo.tTeacherGroupe.tTeacherGroupId INNER JOIN
dbo.tPartAccessDefault INNER JOIN
dbo.tPart ON dbo.tPartAccessDefault.tPartId = dbo.tPart.tPartId ON
dbo.tTeacherGroupe.tTeacherGroupId = dbo.tPartAccessDefault.tTeacherGroupId LEFT OUTER JOIN
dbo.tClassPartAccess ON dbo.tClass.tClassId = dbo.tClassPartAccess.tClassId AND
dbo.tPart.tPartId = dbo.tClassPartAccess.tPartId RIGHT OUTER JOIN
dbo.tStudent ON dbo.tClass.tClassId = dbo.tStudent.tClass
WHERE (dbo.tPart.bActive = 1) AND (dbo.tClassPartAccess.bActive = 1 OR
dbo.tClassPartAccess.bActive IS NULL AND dbo.tPartAccessDefault.bActive = 1)
AND dbo.tClass.tClassId=@classid
Sv: Problem med temporära databaser i SP
Sv: Problem med temporära databaser i SP
Den borde räcka.. Allokerat 157 mbSv: Problem med temporära databaser i SP
Annars skulle jag rent spontant rekommendera att du indexerar alla de fält som används i JOIN och WHERE.
Ett annat sätt att snabba upp det på är att använda Table-variabler i stället för temp-tabeller (kräver SQL Server 2000).
<code>
DECLARE @mytable TABLE(col1 int)
INSERT INTO @mytable VALUES(1)
</code>
OlaSv: Problem med temporära databaser i SP
Sv: Problem med temporära databaser i SP
Sv: Problem med temporära databaser i SP