postgresql - 关于为 int 组合创建索引的建议。范围 + 整数 |Postgres
问题描述
我对下表的索引有疑问。
create table ascertain_telephonenumbersmodel
(
id serial not null
constraint ascertain_telephonenumbersmodel_pkey
primary key,
abc_or_def smallint not null
constraint ascertain_telephonenumbersmodel_abc_or_def_check
check (abc_or_def >= 0),
numbers_range int4range not null,
volume smallint not null
constraint ascertain_telephonenumbersmodel_volume_check
check (volume >= 0),
operator varchar(50) not null,
region varchar(100) not null,
update_date timestamp with time zone not null,
);
此表正在处理的唯一一种查询是
select
*
from
ascertain_telephonenumbersmodel
where
abc_or_def=`some integer` and numbers_range @> `some integer`
# example abc_or_def=900 and numbers_range @> 2685856
问题是——为这种情况创建索引的最佳方法是什么?
数据库 – PostgreSQL 13
行数 ~ 400.000
当前执行时间 ~ 80-110 毫秒。
谢谢!
解决方案
复合主旨索引。您将需要使用扩展来将 int 包含在索引中。
create extension btree_gist;
create index on ascertain_telephonenumbersmodel using gist (abc_or_def, numbers_range);
推荐阅读
- python - 尝试使用 Image.save() 保存图像时出错
- sql - SQL:如何只选择最旧的记录
- java - Eclipse 的 Content Assist 不适用于 java.util.Comparator
- javascript - 附加条不会在 svg 元素上绘制
- java - 不兼容的类型:View 无法转换为 LinearLayout
- perl - 在 perl 中立即调用函数表达式 (IIFE) 的最佳方法?
- ios - iOS AutoFill 功能:有没有办法拦截 AutoFill 事件?
- swift - 理解 for-in 循环
- long-integer - 为什么 Java 中 int 位的 MSB 是 31?
- javascript - 在 php 中的 mp4 => mp3 转换后更改 js/ajax 中的按钮文本