hva som bør være rekkefølgen av år () MÅNED () DAY () i en TSQL der klausulen?

stemmer
-2

Hva bør være i størrelsesorden ÅR DAG MÅNED i en klausul der av TSQL?

Select * from TABLE_NAME 
WHERE
YEAR(COLUMN_NAME)=YEAR(GETDATE()) --1
and DAY(COLUMN_NAME)=DAY(GETDATE()) --2
and MONTH(COLUMN_NAME)=MONTH(GETDATE()) --3

Har for å forbedre driftstiden for spørringen? hvordan en TSQL utføre denne uttalelsen?

Publisert på 11/07/2013 klokken 13:23
kilden bruker
På andre språk...                            


1 svar

stemmer
5

Hvis du ønsker å forbedre ytelsen, så du gjør det galt. Filtrene som du bruker vil ikke bruke en indeks (hvis det finnes en på COLUMN_NAME) fordi du søker en funksjon for dem. Den riktige måten å gjøre det ville være å sammenligne den kolonnen direkte mot GETDATE()(i denne saken). Dette er en bedre måte:

SELECT * 
FROM TABLE_NAME 
WHERE COLUMN_NAME >= DATEADD(DAY,DATEDIFF(DAY,0,GETDATE()),0)
AND COLUMN_NAME < DATEADD(DAY,DATEDIFF(DAY,0,GETDATE()),1)
Svarte 11/07/2013 kl. 13:29
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more