V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tangmanger
V2EX  ›  数据库

你们平时手撸 SQL 多吗?还是 ORM 优先

  •  
  •   tangmanger · 5 小时 28 分钟前 · 1657 次点击

    最近接手一个项目,里面有好多 SQL 语句,然后拿到 ORM 执行 SQL 字符串 话说,有 ORM 平时有什么场景需要手写 SQL 的

    29 条回复    2025-09-04 20:47:00 +08:00
    CoderGeek
        1
    CoderGeek  
       5 小时 19 分钟前
    很少手写了 除非有那种框架搞不了的 手写还容易犯错
    Dorathea
        2
    Dorathea  
       5 小时 19 分钟前
    "好多 SQL 语句,然后拿到 ORM 执行 SQL 字符串 "
    这啥意思, ORM 不就是为了不手动写 SQL 么 = =
    tangmanger
        3
    tangmanger  
    OP
       5 小时 17 分钟前
    @Dorathea 比如 写个 sql= select * from AA _db.excute(sql)
    gam2046
        4
    gam2046  
       5 小时 14 分钟前
    经常写,稍微复杂一点的多表查询,ORM 生成出来的只能说是能运行,但效率都不太好。

    除非是一些单表查询,生成出来的,一般都问题不大。
    Dorathea
        5
    Dorathea  
       5 小时 14 分钟前   ❤️ 1
    说回正题吧, 我是[不用 ORM]( https://blog.codinghorror.com/object-relational-mapping-is-the-vietnam-of-computer-science/) 那一派的, 我觉得小项目不需要, 大项目谨慎使用
    yvyvyv
        6
    yvyvyv  
       5 小时 5 分钟前
    crud 员一般都是 ORM ,写的快可读性好,交接起来也容易。
    连表查询有索引都是慢查询的时候,就用 sql 替代 ORM(因为我 ORM 理解的不够透,还是写 sql 优化容易一些)
    cccvno1
        7
    cccvno1  
       5 小时 0 分钟前
    需要查一些老项目的表的时候,不是所有表设计的都是那么规范的,这时候直接写 sql 查完了再用 orm 将结果映射成对象更方便。
    我觉得 orm 的核心还是映射,能将返回结果映射成结构体就够了。
    可以看看 C#的 dapper ,写一些小项目或者运维小工具挺爽的。
    lbunderway
        8
    lbunderway  
       4 小时 58 分钟前
    数据统计往往要 sql 才好写,orm 不容易实现,我们项目就是 sql 用的多
    WDATM33
        9
    WDATM33  
       4 小时 56 分钟前
    看业务,比如写个报表 所有数据放业务层处理太复杂了, 还是直接 sql 一次性查出数据好处理点。
    pangdundun996
        10
    pangdundun996  
       4 小时 54 分钟前
    复杂点的项目一般都是手写 sql 吧
    irisdev
        11
    irisdev  
       4 小时 54 分钟前
    表结构复杂、数据量大还是写 sql ,人家几十年研发的引擎肯定比查完自己拼强
    lynnworld
        12
    lynnworld  
       4 小时 50 分钟前
    写模板 SQL 然后生成代码
    canteon
        13
    canteon  
       4 小时 35 分钟前
    一直都是手写 sql ,框架或者自己写一个语法糖,能预编译就行。orm 也用,偷懒的时候用 orm 。其实最主要的是因为 orm 还要去看文档,虽然每个框架思想大差不差,也能看懂。如果你要是维护那种老的项目,或者压根是一个不了解的框架,你就知道原生 sql 的方便处了。我现在就在看用 ruby 写的一个老项目,sql 天天有慢查询。全是用 orm 写的,找位置都挺费劲的
    zjsxwc
        14
    zjsxwc  
       4 小时 32 分钟前
    看情况,2 着都用,都灵活使用,今天还在群里看到有人用这个 sql ,就是比用 ORM 方便
    bronyakaka
        15
    bronyakaka  
       4 小时 31 分钟前
    复杂的 sql 都是自己写,orm 不仅丑,效率也不好
    i8086
        16
    i8086  
       4 小时 28 分钟前
    单表 CRUD 都用,报表手写 SQL ,性能方向也是手写 SQL 。
    lujiaxing
        17
    lujiaxing  
       4 小时 26 分钟前
    简单的东西直接 EFCore 出来就是了. 但是复杂的 (例如报表), 必须手写 SQL. 没办法.
    bf109_
        18
    bf109_  
    PRO
       4 小时 26 分钟前
    用 ai 写啊
    Hieast
        19
    Hieast  
       4 小时 23 分钟前
    crud 用 ORM ,报表手写
    betteron
        20
    betteron  
       4 小时 23 分钟前
    自己的项目 || 不强制要求 orm = 直接手搓 sql
    其他的情况,orm,但是复杂的 sql 还得是 orm,即使项目大也是如此
    kk2syc
        21
    kk2syc  
       4 小时 16 分钟前
    发版上线初期先用 orm 写,然后打点测,下一版的时候全部改成 sql ( orm 直接生成),然后手动处理性能问题的 sql 和优化慢查询
    Smileh
        22
    Smileh  
       4 小时 8 分钟前
    我是基本上只用 ORM
    Smileh
        23
    Smileh  
       4 小时 6 分钟前
    @Smileh #22
    前面说什么 orm 效率不好的,orm 不也是转 sql 吗
    有啥效率不好,只能说用的不熟
    KingHL
        24
    KingHL  
       3 小时 55 分钟前
    orm 也有 SQL 优先类型的,想要简洁高效可以尝试换这种 orm 。
    zsc8917zsc
        25
    zsc8917zsc  
       3 小时 53 分钟前
    曾经写了上万行存储过程练就了肌肉记忆....即便很多年不写了,再上手也是唯手熟尔。
    但是现在已经不写 sql 了,能用框架用框架,用不了框架~ All in AI
    loading
        26
    loading  
       3 小时 2 分钟前 via Android
    基本手写,有时要对接其他数据库,直接手写方便快捷,你告诉我 ORM 怎么整,先不算定义吗?
    cobbage
        27
    cobbage  
       3 小时 0 分钟前 via Android
    单表查询 orm 复杂的还得 sql 不然不好优化
    Shamiko
        28
    Shamiko  
       2 小时 54 分钟前
    用 query builder ,简单查询用封装好的 api ,从来不手写 sql
    w3cll
        29
    w3cll  
       1 小时 5 分钟前
    简单的 ORM ,复杂的就手搓,要不然不好优化
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2979 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 13:52 · PVG 21:52 · LAX 06:52 · JFK 09:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.