Welcome to Sign in | Help

Re: Cum sa fac sa pic pe index?!

  •  11-12-2008, 3:29 PM

    Re: Cum sa fac sa pic pe index?!

    Condiţia "'2008-09-11 10:00PM' BETWEEN effective_date AND termination_date" este înţeleasă de SQL Server sub forma "effective_date<='2008-09-11 10:00PM' AND termination_date>='2008-09-11 10:00PM'", deci două condiţii independente (pe coloane diferite), ambele cu inegalităţi.

    Ai spus că "Pentru un effective_date sunt cam 4000 de randuri". Înţeleg că sunt vreo 4000 de rânduri cu valori între 2008-09-11 00:00 şi 2008-09-11 23:59. Totuşi, un index seek pentru condiţia "effective_date<='2008-09-11 10:00PM" nu returnează câteva mii de rânduri, ci milioane, pentru că nu avem nicio valoare minimă pentru effective_date.

    Există vreo relaţie între effective_date şi termination_date, cum ar fi "termination_date este la maxim 3 zile după effective_date" ?

    Dacă da, atunci putem să ne folosim de condiţia "termination_date>='2008-09-11 10:00PM'" ca să adăugăm încă o condiţie de genul "effective_date>='2008-09-08 10:00PM'". Astfel, avem un interval delimitat la ambele capete, iar un index seek pe effective_date ar returna doar vreo 12000 rânduri, care pot fi prelucrate rapid (cu celelalte condiţii).

    Răzvan
View Complete Thread
Powered by Community Server (Commercial Edition), by Telligent Systems