Sql 在我的表中创建索引不会降低成本
我有这张桌子:Sql 在我的表中创建索引不会降低成本,sql,postgresql,Sql,Postgresql,我有这张桌子: accident_info ( accident_index varchar(20), first_road_class varchar(20), accident_severity varchar(20), date date, urban_or_rural_area varchar(20), weather_conditions varchar(40), year int, inscotland varchar(
accident_info
(
accident_index varchar(20),
first_road_class varchar(20),
accident_severity varchar(20),
date date,
urban_or_rural_area varchar(20),
weather_conditions varchar(40),
year int,
inscotland varchar(20)
);
针对该表,我执行以下查询:
select count(accident_index)as hits, first_road_class
from accident_info
group by first_road_class;
没有索引
我想创建一个指数来降低我的总成本,但到目前为止我做的那个似乎不起作用。这是:
create index on accident_info(accident_index, first_road_class);
对于此查询:
select count(accident_index) as hits, first_road_class
from accident_info
group by first_road_class;
您可以在
事故信息(一级公路,事故索引)
上尝试索引。列的顺序很重要。您是否检查了解释分析
是否实际使用了索引?我检查了,但没有使用,感谢您快速响应。您能使用数字添加一个唯一的索引字段并尝试索引吗?这是uni的项目,行/列是固定的,因此,如果这是你的意思,我不能再补充一个。谢谢回答您的问题,并在使用explain(analyze,buffers)
生成的执行计划中添加注释(而不仅仅是“简单”的解释)。请但由于您的查询需要读取所有行,因此这里不太可能使用索引。启用并行可能会给您带来比索引更大的性能改进。我们尝试了,但没有成功,谢谢您的时间这将帮助sgbd不获取堆表,而只扫描索引叶节点。这仅在您获得仅索引扫描时才有帮助。如果您最近对表格进行了VACUUM
ed操作,则只会得到仅索引扫描。