Django:为索引列指定 HASH 而不是 BTREE

2024-04-16

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(使用前将#替换为@)

Django:为索引列指定 HASH 而不是 BTREE 的相关文章

随机推荐

  • Webpack突然崩溃了

    一周前 它运行良好 现在 没有任何更改 相同的电脑和完全相同的文件 与存储库没有差异 之后npm install它不再工作并崩溃并出现以下错误 user machine workspace work project npm run buil
  • 使用 lubridate 和 mutate 将日期格式从 %y-%m-%d %h:%m:%s 更改为 %Y%M%D

    我有一个tbl df有两列开始时间 and StopTime 两者都是dttm 我想改变它的格式 y m d h m s to y m d 我试过了 data lt mutate data StartTime ymd StartTime S
  • jquery focusout事件缺少相关目标信息

    我有一个绑定到的文本输入focusin focusout events element focusin function e focusout function e var to e relatedTarget e toElement un
  • 将视频嵌入到从应用程序的 Documents 文件夹加载到 UIWebView 中的 html 文件中

    我有一个名为的 html 文件videoplay html包含以下内容 p This is demo html file for playing movie file embedded p p p
  • 使用 pandas 将字符串列更改为多个布尔列

    我有一个两列的数据集 我想对其进行重塑 看看这个假的 df df pd DataFrame Alex Apple Bob Banana Clark Citrus Diana Banana Elisa Apple Frida Citrus G
  • PHP登录将密码存储在txt中[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 现在 我知道将密码存储在文本文件中并不安全 但不用担心 安全不是我的目标 这就像那些 hackme 网站之一 所以 我需要知道 如何将
  • 如何测试 sbt 解析器

    在我的本地计算机上 我有一个常春藤缓存 该缓存已通过处理多个项目而被填充 图书馆X使用解析器加载Y在项目中A 同一个图书馆X项目中使用的B 解析这个库没有问题 因为它在我的本地缓存中 当我的一位同事加载项目时B他得到了图书馆的错误X无法解决
  • 使用 SQL 查找给定 x、y 坐标的填充矩形

    给定以下填充的 x y 坐标 0 0 0 1 0 2 1 0 1 1 1 2 2 0 2 1 2 2 4 0 4 1 5 0 5 1 如何编写 SQL 查询来确定所有填充的矩形 矩形由其左上角和右下角定义 期望的结果 x1 y1 x2 y2
  • UWP StoreProductQueryResult 不返回任何产品

    我们无法返回 Windows 应用商店应用程序的附加产品列表 我们在 Windows 应用商店中有一个包含 3 个订阅附加组件的应用程序 这些附加组件被标记为隐藏 因为我们不希望它们只能通过我们的应用程序在商店中可见 我们正在开发针对 Wi
  • 通过键盘快捷键重新缩进 XML

    我正在浏览数百个 xml 文件 当我在记事本 中打开它们时 我必须对每个文件执行 HTML Tidy gt re indent XML 对于一个文件来说 这一步骤并不会花费太长的时间 但是加起来就会产生很多很多的文件 有没有办法将其放在记事
  • Linux 上的 mpc / mpd:如何播放本地 wav 文件

    我正在尝试将本地文件添加到 mpd 通过 mpc 并播放它 我的平台是OpenWRT嵌入式linux 因此 从手册页来看 它指出 mpc add
  • 如何将 .sql 文件的内容读入 R 脚本以运行查询?

    我已经尝试过readLines和read csv功能 但随后不起作用 以下是该内容的内容my script sql file SELECT EmployeeID FirstName LastName HireDate City FROM E
  • Node Express 中的 res.sendfile 并传递数据

    有没有办法从 Node JS 应用程序重定向到 HTML 文件 例如 res sendFile http expressjs com api html res sendFileExpress 并将 JSON 数据传递到 html 文件 我知
  • Bash 子 shell:括号:() VS 美元括号:$()

    在 bash 中 两者 and 创建一个子shell 彼此之间有什么区别 它们的典型用途是什么 只是创建一个复合命令 运行括号内的命令 做同样的事情 但也替换输出 来自文档 list list在子shell环境中执行 变量赋值和内置 影响
  • Docker Swarm如何实现卷共享?

    Docker Swarm 可以管理两种类型的存储 volume and bind While bindDocker 文档不建议这样做 因为它在本地目录 在每个 swarm 节点上 与任务之间创建了绑定 volume没有提到实现 所以我不明白
  • apache centos 上的多个 php

    如何在 Centos 6 5 上同时运行多个 php 版本 就是这样 要求Centos 6 5 可能适用于 6 6 和 7 Apache Apache 2 2 15 可能与其他版本一起使用 本指南安装和使用FASTCGI 请参阅替代安装的注
  • 获取 JavaScript 数组中的下一个和上一个元素

    我有一个很大的数组 带有非连续的 ID 看起来像这样 PhotoList 89725 new Array PhotoList 89725 ImageID 89725 PhotoList 89725 ImageSize 123 PhotoLi
  • 如何创建ear文件,并在其中包含war和jar文件

    我正在尝试从命令提示符创建 EAR 文件 我用过 jar cvf myServletWAR ear 但我的问题是 如何让这个 EAR 文件中包含 WAR 文件和 JAR 文件 我需要单独创建war文件并包含在ear文件中吗 我无法为此使用
  • 使用prepareForReuse的正确方法是什么?

    需要帮助了解如何在 UIKit 中使用prepareForReuse 这文档 https developer apple com reference uikit uitableviewcell 1623223 prepareforreuse
  • Django:为索引列指定 HASH 而不是 BTREE

    Django 模型中有没有好的方法来指定特定的索引存储类型 例如 MySQL 的默认存储类型是 BTREE 而对于我的特定列 使用 HASH 哈希表 作为存储类型可能会更有效 如果不创建自定义字段或修改 django 核心 我找不到一个好方