अपना timestamp
कास्ट करें date
. का मान यदि आप सरल वाक्यविन्यास चाहते हैं। इस तरह:
SELECT *
FROM tbl
WHERE timestamp_col::date = '2011-12-01'; -- date literal
हालांकि, बड़ी तालिकाओं के साथ यह तेज़ होगा:
SELECT *
FROM tbl
WHERE timestamp_col >= '2011-12-01 0:0' -- timestamp literal
AND timestamp_col < '2011-12-02 0:0';
कारण:दूसरी क्वेरी को तालिका में प्रत्येक मान को बदलने की आवश्यकता नहीं है और टाइमस्टैम्प कॉलम पर एक साधारण अनुक्रमणिका का उपयोग कर सकते हैं। अभिव्यक्ति सारगर्भित है।
नोट ऊपरी सीमा को बाहर रखा गया है (<
<=
. के बजाय ) सही चयन के लिए।
आप इस तरह के व्यंजक पर एक अनुक्रमणिका बनाकर उसकी भरपाई कर सकते हैं:
CREATE INDEX tbl_ts_date_idx ON tbl (cast(timestamp_col AS date));
फिर क्वेरी का पहला संस्करण जितना तेज़ होगा उतना तेज़ होगा।