例如
CREATE INDEX my_index_name
ON public.my_table USING btree
(my_column int8_ops)
TABLESPACE pg_default;
VS
CREATE INDEX my_index_name
ON public.my_table USING btree
(my_column)
TABLESPACE pg_default;
有什么区别?
答案 0 :(得分:5)
尽管我不喜欢逐字引用,但我认为the manual中所写的内容最正确,最简洁地描述了这一点,我怀疑自己能做得更好:
运算符类标识索引要使用的运算符 该专栏。例如,int4类型的B树索引会 使用int4_ops类;此运算符类包括比较 int4类型的函数。在实践中默认运算符 列的数据类型通常就足够了。 主要 拥有运算符类的原因是某些数据类型的原因 可能不止一个有意义的索引行为。例如,我们 可能希望按绝对值对复数数据类型进行排序 或者通过实际部分。我们可以通过定义两个运算符类来实现 数据类型,然后在制作时选择适当的类 指数。运算符类确定基本排序顺序(哪个 然后可以通过添加排序选项COLLATE,ASC / DESC和/或来修改 NULLS FIRST / NULLS LAST)。
至于您的示例,如果将my_column
定义为类型int8
,则将运算符类指定为int8_ops
是没有意义的,因为这将是该类型的默认运算符。 / p>