9条Rails数据库最佳实践

参考链接:http://blog.carbonfive.com/2016/11/16/rails-database-best-practices/

1. 让数据库做他们自己擅长做的事情
2. 编写高效并且chainable的Scopes
  • 返回ActiveRecord:Relation对象(比如不要触发Query)
  • 在数据库中Filter数据
  • 在数据库中排序
  • 不要在Scope中添加排序功能(可以将排序单独写成一个Scope)
3. 减少数据库访问次数
  • 如果一个经常访问的页面导致了太多的数据库访问,那么值得花费一些时间来让数据库访问次数变得更少。
4. 使用索引
  • 考虑将所有where条件中会使用的字段和id字段一样都建立索引。
5. 面对复杂查询时,定义和使用单独的查询对象(Query Objects)
6. 避免在Scope和Query Object之外使用临时(Ad-hoc)的query
7. 使用正确的类型
  • 每一种数据库都有比ActiveRecord更精细的类型,了解并正确的使用它们。
8. 考虑使用数据库本身的全文查询(Full-Text Search)
  • 添加更强大的Elastic Search或者Solr框架都会向程序倒入更多的依赖,所以尽量使用数据库本身的全文查询功能,在数据库本身可以做到的情况下。
9. 尽量不要使用存储过程(Stored procedures)
  • 当业务快速增长变化中,存储过程是非常难以更改并且保持正常工作的,而且特别难以测试.