【发布时间】:2013-11-01 17:22:38
【问题描述】:
假设我们有一个带有布尔字段的模型:
class AModel(models.Model):
flag = models.BoleanField()
有什么理由在这个字段上添加索引吗?
我认为这没有理由,因为搜索会有小利润(这只是分成两个),但记录的开销很大。但我同事的想法不同。
这有什么经验法则吗?
【问题讨论】:
-
这取决于您计划对数据库执行的查询类型。如果它是一个写入繁重的数据库,那么是的,索引是多余的。
-
一般来说,布尔字段上的索引并没有太大帮助,因为它只会将数据分成两半。您通常希望在具有许多唯一值的列上建立索引。
-
没有经验法则,这根本不是坏习惯。我理解正确吗?
-
没有正确答案,每个人都有自己的经验法则。我说:只为“选择性”的字段定义索引,或者您事先知道会经常被查询。稍后您可以分析数据库性能并在实际使用的字段上添加更多索引。通常在一开始就定义许多索引弊大于利。
-
如果您希望在单个查询中查询多个布尔索引,这些索引会不会很有帮助,因为它们是复合的?例如3 个布尔索引将数据集除以 ~8
标签: django django-models django-orm