kha*_*iuk 5 django django-models django-orm
假设我们有boolean字段的模型:
class AModel(models.Model):
flag = models.BoleanField()
Run Code Online (Sandbox Code Playgroud)
有没有理由在这个字段上添加索引?
我认为这没有道理,因为搜索中会有微薄的利润(这只会分成两部分),但录音带来的开销很大.但我的同事认为不同.
这有什么经验法则吗?
这取决于。
如果您的数据主要包含一个或另一个布尔值(即,几乎所有内容都是 FALSE),但您通常只想查询与另一个值匹配的值(即,仅查询 TRUE 值),则可以在布尔字段可能会对性能产生很大的影响:特别是如果您强制索引首先存储 TRUE 值。
诀窍在于字段(和索引)是选择性的,因为您可以丢弃大部分行,因此索引可以通过存储有用的行来加速这一过程。
或者,您可以在不同的字段(您可能也在查询)上有一个索引,该索引使用一个WHERE <boolean-field>子句仅存储真实值(反之亦然,具体取决于您的需要)。我还没有尝试过,但我敢打赌 Postgres 能够正确使用这个索引......
| 归档时间: |
|
| 查看次数: |
927 次 |
| 最近记录: |