数据库查询与缓存策略详解
1. 绑定变量问题
在向数据库传递查询时,模板化变量被称为绑定变量。Rails 框架看似支持绑定变量,在编写查询时,可使用带问号的模板来表示绑定变量。以下是一个示例代码:
if !zip_code.empty?
conditions_sql << "miles_between_lat_long(
(select latitude from zip_codes where zip = ?),
(select longitude from zip_codes where zip = ?),
latitude, longitude) < 15"
conditions_vars.concat [zip_code]*2
end
psts = Physical::MovieShowtimeWithCurrentAndSoldOut.find(:all,
:select => [:id, :movie_id, :theatre_id, :latitude, :longtitude],
:include => [:movie, :theatre],
:conditions => [conditions_sql.join(" and "), *conditions_vars])
然而,ActiveRecord 并不支持将这些模板和绑定变量传递给实际与数据库通信的数据库驱动程序。这意味着,尽管使用了绑定变量,但目前在 Rails 中并无益处。即便有 100 个模板用于 100 万次查询执行,数据库实际上仍会计算 100
数据库查询与缓存策略解析
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



