为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM7.6
【操作系统】:WIN
【CPU】:
【问题描述】*:
表数据:2000W
在timestamp字段上建立单独索引,select时索引不生效,查询效率无法提升,是达梦数据库不支持吗?
select /+ index(table_name idx_index_name)/ * from table_name where create_time>to_date('2024-01-01','yyyy-mm-dd')
如果建立的是单列索引,而使用的时候用了系统函数处理了时间字段,则不会使用建立的索引,如:
select * from test where to_date(c1,‘yyyy-mm-dd’)=‘2021-01-01’;
create index index_test_01 on test(c1);
这个索引就没有用,因为索引列内仅为C1字段。
如果是此种情况,建议修改SQL where c1 >=‘2021-01-01’ and c1<‘2021-01-02’;
或者建立函数索引create index index_test_01 on test(to_date(c1,‘yyyy-mm-dd’));
但是该函数索引的使用场景仅针对该种掩码,所以还是建议改写SQL。
如果不是该种情况,先更新下索引的统计信息试试,如果还是不可以,请发出对应的SQL,建立的索引和执行计划。