यह केवल नाम नहीं है - यह सटीक क्वेरी है जिसे आप चल रहे हैं।
<cfquery name="getPeople" cachedwithin=".5" ...>
select name from employee order by name
</cfquery>
आप अपने एप्लिकेशन में कहीं और यह एक ही क्वेरी आह्वान हैं, तो आप अगर यह पहली क्वेरी के आधे एक दिन के भीतर है कैश्ड संस्करण मिल जाएगा। लेकिन ये ताजा डेटा के लिए डेटाबेस हिट करेंगे:
<!--- Different name, same SQL: A new cached query --->
<cfquery name="getEmployees" cachedwithin=".5" ...>
select name from employee order by name
</cfquery>
<!--- Different SQL, same name: Redefining the cached query --->
<!--- Note: As pointed out in comments, it's not really overwriting the old query
of the same name, but making a new one in the cache. The first one by the
same name is still in the cache, waiting for eviction. --->
<cfquery name="getPeople" cachedwithin=".5" ...>
select name from employee order by name desc
</cfquery>
और हाँ, यह एक चर को ध्यान में रखता है। यदि आप cfqueryparam
का उपयोग करते हैं - जो आपको करना चाहिए - आपका डेटाबेस क्वेरी प्लान कैश करेगा, लेकिन cachedwithin
का उपयोग करके, एक परिवर्तित पैरामीटर वाले प्रत्येक क्वेरी को क्वेरी कैशिंग परिप्रेक्ष्य से अलग माना जाएगा। ध्यान दें कि इसका अर्थ यह है कि यदि आप विभिन्न पैरामीटर के साथ कई बार चलने वाली क्वेरी पर cachedwithin
का उपयोग करते हैं, तो आप कम क्वेरी कैश दरों वाले प्रश्नों के साथ अपनी क्वेरी कैश बाढ़ करेंगे।
स्रोत
2010-06-14 19:07:18
तो आप जो कह रहे हैं वह यह है कि दूसरा मिलता है, परिणाम परिणाम सेट 1 getPeople परिणाम सेट को प्रतिस्थापित करेगा? – Jason
कैश क्वेरी योजना? वास्तव में? – Henry
@ जेसन, दस्तावेज़ के अनुसार, नहीं, चूंकि SQL कथन अलग है हालांकि उनके पास एक ही क्वेरी नाम है। – Henry