32、数据库查询与缓存策略详解

数据库查询与缓存策略解析

数据库查询与缓存策略详解

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值