更新:进一步简化实验psql的Q:

对于以下Django模型:

class Book(models.Model):

name = models.TextField(unique=True)

pg_dump(PostgreSQL 9.3)显示下表&限制:

CREATE TABLE book (

id integer NOT NULL,name text NOT NULL,);

ALTER TABLE ONLY book ADD CONSTRAINT book_name_key UNIQUE (name);

CREATE INDEX book_name_like ON book USING btree (name text_pattern_ops);

但是PostgreSQL documentation说:

PostgreSQL automatically creates a unique index when a unique

constraint […] is defined for a table.

[…] there’s

no need to manually create indexes on unique columns; doing so would

just duplicate the automatically-created index.

问题:为什么Django会在一个唯一的列上创建索引呢?也许理由是它使用运算符类text_pattern_ops,因此Django需要添加另一个索引.如果是这种情况,更好的方法是将Django解释为unique = True约束,如下所示:

CREATE UNIQUE INDEX book_name_like ON book USING btree (name text_pattern_ops);

根本没有列中的UNIQUE约束.因此,带有text_pattern_ops的单个UNIQUE INDEX将导致DB不为UNIQUE约束创建隐式索引.

django models索引_sql – 为什么Django显式地在唯一字段上创建索引相关推荐

  1. 创建了联合索引还用在单个字段上创建索引吗_数据库 索引并不是万能的

    数据库 -- 索引并不是万能的 在这里插入图片描述 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息.如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行 ...

  2. 如何在ORACLE数据库的字段上建立索引?

    Oracle中建立索引,会提高查询速度: create index 索引名 on 表名(列名); 例如: create index index_userid on tbl_detail(userid) ...

  3. sql分区表上创建索引_SQL Server中分区表和索引的选项

    sql分区表上创建索引 介绍 (Introduction) I work for a large, multinational financial institution. Like most com ...

  4. mysql 排序字段 添加索引吗_mysql需要在哪些字段上加索引?

    mysql需要加索引的字段:1.经常出现在Where子句中的字段,特别是大表的字段,应该建立索引:2.经常与其他表进行连接的表,在连接字段上应该建立索引:3.分组字段或者排序字段应该创建索引:4.选择 ...

  5. 在外键上创建索引V1.0

    开始: 发现在一个项目中,后台数据库各个表,具有外键约束的列上都没有创建索引.我们需要一次性给他们创建索引,下面我写了一个通用的存储过程sp_CreateIndexForFK,来实现这一个功能. 也许 ...

  6. 【约束】唯一键和主键在已存在索引的字段上创建和直接创建的区别

    目的: 测试一下, 1)如果一个表中已经创建了 唯一索引,那么再在 唯一索引上创建唯一键约束和主键约束,与直接创建主键约束与唯一键约束的区别 2)如果一个表中已经创建了 普通索引,那么再在 普通索引上 ...

  7. 保持显式用户参与的有效自动化创建

    摘  要: 在日益复杂的环境中,如汽车驾驶,用户失去对自动化的参与会产生越来越多意想不到的后果.本文提出了一个用于在现有系统中进行协同自动化设计的三步流程,以在维持用户参与的限制下最大化系统性能.第一 ...

  8. SQL2K数据库开发二十二之索引操作在视图上创建索引

    1.在企业管理器中,右击要创建索引的视图,在弹出的菜单中选择"设计视图"命令进入视图设计器.         2.在视图设计器中显示了视图所包含的列,定义视图的SQL语句以及视图中 ...

  9. lucene全文搜索之三:生成索引字段,创建索引文档(给索引字段加权)基于lucene5.5.3...

    前言:上一章中我们已经实现了索引器的创建,但是我们没有索引文档,本章将会讲解如何生成字段.创建索引文档,给字段加权以及保存文档到索引器目录 luncene5.5.3集合jar包下载地址:http:// ...

最新文章

  1. HP1020打印机“传递给系统调用的数据区域太小” 如何处理?
  2. OpenCV基础篇之读取显示图片
  3. ROS机器人程序设计(原书第2版)1.4.7 在BeagleBone Black中安装rosinstall
  4. Java面向对象编程篇5——枚举
  5. 内部办公网与IDC机房的GRE隧道配置实践
  6. [Offer收割]编程练习赛12 题目1 : 歌德巴赫猜想
  7. 20135234mqy-——信息安全系统设计基础第七周学习总结
  8. Laravel5.x 封装的上传图片类
  9. Navicat安装配置
  10. httppost请求工具类
  11. 如何提高团队开发质量
  12. 苹果输入法微信换行及微信群接龙
  13. 皕杰基础平台的登录方式
  14. springboot整合redis缓存报错
  15. java 变量类型_Java 变量类型
  16. Chrome浏览器IDM下载报错Error 0×80004002
  17. 加油站APP开发定制功能
  18. “万物盲盒”的时代,企业如何玩转“盲盒”经济?
  19. kindle推送漫画
  20. 投票助力源码_微信投票助手源码

热门文章

  1. 如何用python做计算软件_如何用Python写一个计算器软件 附带效果图
  2. oracle 驱动表提示错误代码,oracle驱动表以及如何确定驱动表
  3. dc持久内存与mysql_Calypso Systems推出测试软件和服务器测试傲腾数据中心级持久内存...
  4. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 26丨餐馆营业额变化增长【难度中等】​
  5. 事实--思维导图笔记
  6. mysql root mysqld_MySQL how to run mysqld as root
  7. linux汇编字符长怎么看,linux – 在内联GNU汇编程序中获取字符串长...
  8. CoreAnimation编程指南(四)图层树结构
  9. 现代软件工程 期中/期末总结博客作业
  10. python 二分法调试代码,Python实现二分法