WITH limits AS
(
SELECT COALESCE(@startDate, MIN(mydate)) AS startDate, COALESCE(@endDate, MAX(mydate)) AS endDate
FROM mytable
)
SELECT m.*
FROM limits
JOIN mytable m
ON mydate BETWEEN startDate AND endDate
mydate
にインデックスがある場合、これは最も効率的です。 、この条件は sargable であり、Index Seek
を使用するため .
インデックスがない場合は、IFNULL
を使用します 他の人によって提案された構造。