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

django orm 优化请教

  •  
  •   tryit · 2021-02-07 11:55:15 +08:00 · 2145 次点击
    这是一个创建于 1383 天前的主题,其中的信息可能已经有所发展或是发生改变。

    通过 orm 的 query 查出来的 sql 语句大概是这个样子的:

    SELECT * FROM `table` WHERE (`table`.`column1` IN ('condition1', 'condition1', 'condition1', 'condition1', 'condition1', 'condition1') AND `table`.`column1` = '2021-01-03' AND NOT (`table`.`column2` IN ('condition2', 'condition2') AND `table`.`column2` IS NOT NULL) AND ((`table`.`column3` = 'column3`' AND NOT (`table`.`column3` = 'condition3' AND `table`.`column3` IS NOT NULL)) OR `table`.`column4` IN ('condition4', 'condition4', 'condition4')) AND (`table`.`column5` LIKE BINARY 'condition5%' OR `table`.`column6` = 'condition6'))

    数据量大概 600w,查出来的结果有 100 条 在 mysql 里试了下,大概要花 7min,explain 得到的结果是,只有 column1, column2 用到了索引,我对每个 column 都建了索引,请问下还有什么办法优化阿。。。谢谢~

    2 条回复    2021-02-07 18:57:21 +08:00
    neoblackcap
        1
    neoblackcap  
       2021-02-07 12:47:06 +08:00
    干掉 like 查询
    wuwukai007
        2
    wuwukai007  
       2021-02-07 18:57:21 +08:00 via Android
    建议先写 sql 在转成 orm,orm 是个黑箱子
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3157 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 12:23 · PVG 20:23 · LAX 04:23 · JFK 07:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.