Django 模型中有没有好的方法来指定特定的索引存储类型?
例如,MySQL 的默认存储类型是 BTREE,而对于我的特定列,使用 HASH(哈希表)作为存储类型可能会更有效。
如果不创建自定义字段或修改 django 核心,我找不到一个好方法,这将为我做到这一点。我还可以通过在创建表后修改索引来完成此操作。
这种情况对于大多数情况可能并不重要,但在某些情况下,哈希表是一种更有效的查找机制,当然,对列进行排序要么没有必要,要么没有意义。例如,具有随机生成的数据的列通常不会对信息进行合理的排序(除非您正在寻找可重复的随机排序 - 但这不是重点)。
查看代码后django.db.backends.mysql.creation.sql_indexes_for_field()
,似乎没有办法在 Django 本身中指定索引类型(没有办法获得USING
参数到查询中,除非您想对后端进行子类化)。
解决此限制的最佳方法是按照您的建议在创建表后修改索引。你可以使用 Django 的后端特定的初始 SQL 数据 http://docs.djangoproject.com/en/dev/howto/initial-data/#database-backend-specific-sql-data的功能。只需在应用程序中创建一个“sql”目录,然后创建一个名为的 SQL 文件<your_modelname>.mysql.sql
在里面。然后将用于修改索引类型的 SQL 放在那里,Django 将在影响模型表的“syncdb”或“reset”调用后执行它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)