有没有人有经验表明,如果 Select 使用ORM(在Django、RoR、SQLAlechemy等中)而不是SQL和手动设计的数据库,开发人员可能会受到什么样的性能影响?我想有一些复杂的问题,包括在ORM的约束内指定数据库是增加还是减少创建高效数据库 struct 的机会(基于开发人员的经验水平),以及开发人员构造基于SQL或基于ORM的查询的良好程度(同样基于他/她的经验)的问题.任何关于这些或内在性能问题的信息都会让我非常感兴趣.

推荐答案

我的建议是,在需要之前不要担心这一点——不要过早地进行优化.ORM可以为开发速度、代码可读性提供许多好处,并且可以消除大量代码重复.如果它能让你的应用程序更容易开发,我建议你使用它.

在开发过程中,使用基准测试和性能分析来确定代码中的瓶颈,如果需要,您可以绕过ORM,在需要的地方使用手动查询.通常,您将能够使用缓存和数据库索引(以及其他)来提高ORM的速度,然后您可以决定在哪里需要手动查询.在大多数情况下,ORM性能可能是可以接受的,使用它的好处将远远超过性能成本.

Database相关问答推荐

嵌套事务的目的

术语 SSTable 和 LSM Tree 有什么区别

如何理解mysql explain 命令

创建数据库索引有哪些最佳实践和经验法则?

如果我使用存储过程,我对 SQL 注入免疫吗?

android 应用程序与 web 服务通信的安全性

递归关系的数据库设计

便携式(PHPPass)密码哈希.我应该使用它们吗?

按请求的可变事务隔离级别

使用 2 个进程处理数据库

查询表的外键关系

什么是 Scalar标量查询?

Postgresql 从多个表中删除多行

主键、唯一键和外键约束以及索引之间有什么区别?

如何在实体-属性-值设计中处理不同的数据类型(例如,具有多列的单个表或每种数据类型的多个表)?

Slick 3.0 在数据库驱动程序级别是reactive/asynchronous的吗?对于哪些数据库?

Fluent NHibernate 的类映射生成器

如何在 SQL Server 中总结时间字段

如何使用 JPA 注释创建连接表?

如何在 SQLServer 数据库的两个实例之间复制数据记录