Django:将 db_index 添加到现有表

标签 django database

我有一个 Django 模型,我想在创建表后将 db_index=True 添加到字段。

我发现 Django 不会创建迁移,因此不会创建索引。如果表不存在并且是第一次创建,Django 会创建索引。

我读过 Django : db_index and makemigrations ,但我想知道手动创建迁移文件是否是个好主意?

我正在使用 MySQL。 Django 在这方面的最佳实践是什么?

最佳答案

是的。为此使用手写迁移是完全可以接受的,并且(有时)甚至是最佳实践。甚至有一个特殊的命令可以为这些类型的问题创建空白迁移。

python manage.py makemigrations --empty --name create_table_index 

然后像在您的链接中发布的示例一样编辑它:

class Migration(migrations.Migration):

    dependencies = [
        ('your_app', '0001_initial'), # or last mig
    ]

    operations = [
        migrations.RunSQL("CREATE INDEX idx_column ON my_table (my_column)"),
        # this format should also work for mysql
    ]    

对于对您的应用程序至关重要的表,一些运营团队更喜欢手动添加索引,这样您就可以更好地控制创建索引对应用程序产生影响的时间。但这通常是团队偏好的问题

关于Django:将 db_index 添加到现有表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41496690/

相关文章:

android - 我应该如何在 Sqlite 中执行此查询?

javascript - Django:将 textarea 小部件与 javascript 字符计数器/限制器一起使用?

python - 执行跨多个表的查询的最佳 django 方法是什么?

mysql - 更正此ERD这些部分的最有效方法是什么?

xml - dbms_xmlgen.getxml - 如何设置日期格式

javascript - $lookup 之后的 Mongodb $near

iphone - 如何在 iPhone 应用程序的数据库中实现搜索系统

python - Django:无法将上传的图像绑定(bind)到表单 ImageField()

python - 在 Heroku Python Virtualenv 中找不到 Django

javascript - Leaflet MultipolygonField 小部件,不接收触摸事件