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
. पर कोई अनुक्रमणिका है, तो यह सबसे कुशल होगा , चूंकि यह स्थिति सरल है और एक Index Seek
. का उपयोग करेगी ।
यदि कोई अनुक्रमणिका नहीं है, तो IFNULL
use का उपयोग करें दूसरों द्वारा प्रस्तावित निर्माण।