【问题标题】:Creating a GIN index in Django在 Django 中创建 GIN 索引
【发布时间】:2021-11-25 10:45:18
【问题描述】:

我在 Django 中创建了一个模型。

class MyModel(models.Model):
    features = TextField(blank=True, default='')

有几种可能的方法可以将数据存储在feature 字段中。下面是一些示例。

  1. feature1;feature2
  2. feature1, feature2
  3. feature1,feature2

等等。我需要为该字段创建一个 GIN 索引。我可能会通过以下方式在 postgreSQL 中执行此操作

CREATE INDEX features_search_idx ON "mymodel" USING gin (regexp_split_to_array("mymodel"."features", E'[,;\\s]+'));

是否可以通过迁移来做同样的事情?

【问题讨论】:

    标签: django indexing


    【解决方案1】:

    是的。

    • 创建一个空迁移:python manage.py makemigration yourapp --empty -n pour_gin
    • 在迁移文件中添加migrations.RunSQL() 操作。
    class Migration(migrations.Migration):
    
        dependencies = [
            # ...
        ]
        operations = [
            migrations.RunSQL(
                sql="""CREATE INDEX features_search_idx ON "mymodel" USING gin (regexp_split_to_array("mymodel"."features", E'[,;\\s]+'));""",
                reverse_sql=migrations.RunSQL.noop,  # TODO: replace me with DROP INDEX
            ),
        ]
    

    【讨论】:

    • DROP INDEX 必不可少吗?
    • 如果您希望能够在任何时候撤消迁移,那就太好了。
    猜你喜欢
    • 2017-10-03
    • 2018-07-21
    • 2017-12-02
    • 1970-01-01
    • 2018-05-12
    • 2023-03-19
    • 1970-01-01
    • 2015-09-02
    • 1970-01-01
    相关资源
    最近更新 更多