Đó không chỉ là tên - đó là truy vấn chính xác mà bạn đang chạy.
<cfquery name="getPeople" cachedwithin=".5" ...>
select name from employee order by name
</cfquery>
Nếu bạn gọi cùng một truy vấn này ở bất kỳ nơi nào khác trong ứng dụng, bạn sẽ nhận được phiên bản được lưu trong bộ nhớ truy vấn đầu tiên trong nửa ngày. Nhưng những thông tin này sẽ được truy cập vào cơ sở dữ liệu để có dữ liệu mới:
<!--- 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>
Và có, nó có tính đến một biến. Nếu bạn sử dụng cfqueryparam
- mà bạn nên làm - cơ sở dữ liệu của bạn sẽ lưu trữ kế hoạch truy vấn, nhưng thậm chí sử dụng cachedwithin
, mỗi truy vấn có thông số đã thay đổi sẽ được coi là khác với phối cảnh bộ nhớ cache truy vấn. Lưu ý rằng điều này có nghĩa là nếu bạn sử dụng cachedwithin
trên truy vấn chạy nhiều lần với các tham số khác nhau, bạn sẽ tràn bộ nhớ cache truy vấn của mình với các truy vấn có tỷ lệ truy cập bộ nhớ cache thấp.
Nguồn
2010-06-14 19:07:18
vì vậy những gì bạn đang nói là tập hợp kết quả getPeople thứ 2 sẽ thay thế tập hợp kết quả getPeople thứ nhất? – Jason
gói truy vấn bộ nhớ cache? có thật không? – Henry
@ Jason, theo doc, không, vì câu lệnh SQL khác nhau mặc dù chúng có cùng tên truy vấn. – Henry