M2M 模型中的另一个常见模式是在两个字段一起作为一个唯一约束。...并不是,数据库为特定用例提供其他类型的索引也蛮多的。
从 Django 1.11 开始,有一个新的 Meta 选项用于在模型上创建索引。这给了我们探索其他类型索引的机会。...假设我们在一列中有这些值,每一个都是一个块:
1, 2, 3, 4, 5, 6, 7, 8, 9
我们为每三个相邻的块创建一个范围:
[1,2,3], [4,5,6], [7,8,9]
对于每个范围,我们将保存范围内的最小值和最大值...再举一个例子,这次列中的值不会被很好地排序:
[2–9], [1–7], [3–8]
再试着查找 5:
[2–9] — 可能在这里
[1–7] — 可能在这里
[3–8] — 可能在这里
索引是无用的...,我创建了一个约 2M 行的表,并在磁盘上自然排序了日期字段:
B-Tree 索引:37 MB
BRIN 索引:49 KB
没错,你没看错。