SQL Server Compact: prestandaproblem

Permalänk
Medlem

SQL Server Compact: prestandaproblem

Hej!

Jag har skrivit ett loggprogram som använder en SQL Server Compact 3.5-databas för att lagra poster. I huvudtabellen lagras bland annat tidpunkten då posten lades in. När jag kör en fråga med datumgränser får jag ett tråkigt problem. Beroende på antalet poster som ligger mellan två datum tar frågan olika lång tid att köra. Detta trots att sorteringsordningen garanterar att resultatmängden ska bli samma i båda fallen. Ett exempel:

Följande fråga tar 254 ms att köra:

select top(50) * from Log where DATE >= '2009-01-01T00:00:00' and DATE <= '2009-09-21T23:59:59' order by ID asc

Följande fråga tar 2608 ms att köra:

select top(50) * from Log where DATE >= '2009-01-01T00:00:00' and DATE <= '2009-09-25T23:59:59' order by ID asc

Det enda som skiljer är alltså den övre gränsen, men svaret blir det samma för båda frågorna. Det känns som att det borde gå att modifiera frågan så att databasmotorn inte behöver leta igenom hela intervallet, eller?

Tack på förhand!

Permalänk

Skapa ett index på DATE?

Vet inget specifikt om just den databasen du kör dock.

Visa signatur

Dator: i5-13600K, Asus Prime Z690-P, Noctua NH-D14, Kingston Fury Beast RGB 32GB DDR5-6000, Gigabyte RTX 4090 gaming OC, Seasonic Platinum SS-1000XP, Lian-Li Lancool 215, Samsung 980Pro 2TB M.2 NVME, Acer Predator XB323QKNV 4k 144Hz

Permalänk
Medlem

Det bästa sättet om du vill veta varför en fråga är långsammare än en annan är att titta på execution plan för frågorna. Ta en titt här för att få reda på hur man gör: http://blogs.msdn.com/sqlservercompact/archive/2008/04/30/que...