【问题标题】:Is Django Make Indexes for ManyToMany field?Django 是否为 ManyToMany 字段创建索引?
【发布时间】:2020-04-23 09:55:00
【问题描述】:

我问 Django 是否为 ManyToMany 字段创建数据库索引...如果是,它是否为我在 through 中提供的模型执行此操作? 我只是想确保数据库在有大量数据时能够快速运行

【问题讨论】:

    标签: python django python-3.x database django-models


    【解决方案1】:

    它适用于普通 m2m 字段 - 无法确定“通过”表,因为我当前项目中没有任何表,也无权访问其他项目 ATM,但它仍然应该是这种情况因为这个索引对于 UNIQUE 约束是必需的。

    FWIW,您可以通过查看数据库中的表定义(在 MySQL/mariadb 中使用 show create table yourtablename)轻松地自行检查它。

    话虽如此,数据库索引仅在主要存在不同值时才有用,如果不是这种情况,实际上会降低性能(取决于您的数据库供应商等) - 例如,如果您有一个类似 3 或4 个可能的值(即“性别”或类似的东西),索引它可能不会产生预期的结果。对于 m2m 表来说应该不是问题,因为 (table1_id, table2_id) 对应该是唯一的,但关键是您不应该相信仅仅添加索引会自动提高您的性能 - 调整 SQL 数据库性能本身就是一种折衷,实际上很大程度上取决于您实际使用数据的方式。

    【讨论】:

    • 我明白了...我知道主要是设计数据库,但是如果我经常使用 ManyToMany 字段,索引将特别有用...谢谢
    • 他回答了你的问题。您应该接受 IMO 的正确答案
    猜你喜欢
    • 1970-01-01
    • 2010-11-29
    • 2018-05-05
    • 2013-06-27
    • 2011-08-02
    • 2018-06-25
    • 2013-05-23
    • 1970-01-01
    • 2020-12-08
    相关资源
    最近更新 更多