0%

这是一篇关于一个 MySQL query optimizer 问题的定位及解决。

公司系统中一个简单的 SQL 查询却花费了近 3 秒的时间,语句大致为:

1
2
3
SELECT slug FROM products
WHERE id IN (id1, id2, ...)
AND deleted_at IS NULL;

其中,id 是 PRIMARY KEY,deleted_at 记录删除时间,用于实现 Soft Delete,也加了索引。deleted_at 允许为空,为空代表是正常商品,不为空代表“已删除”的商品,同时记录下删除时间。

Read more »

最近我们的项目中同时用了 MySQL 和 MongoDB 数据库,但不能直接使用Rails提供的 has_manybelongs_to 在 ActiveRecord models 和 Mongoid documents 之间建立联系(associations)。

1
2
3
4
5
6
7
8
9
10
11
12
13
# app/models/user.rb
class User < ActiveRecord::Base
has_many :visits
end

# app/models/visit.rb
class Visit
include Mongoid::Document
end

# in Rails console
User.find(1).visits
# => NoMethodError: undefined method `relation_delegate_class' for Visit:Class
Read more »