对于我们数据库中的现有表,
如果我在表上创建索引,例如:
create index i_system_code_system_type_no on system_code (SYSTEM_TYPE_NO);
然后设置统计信息:
set statistics index i_system_code_system_type_no;
对表执行查询时,"应该"使用索引,不是。无论出于何种原因,我猜测的优化器(除非我错过了什么),并不觉得它是最好的方法。但是,如果我重新启动Firebird Guardian服务,它确实会使用它。
服务器是否需要时间来赶上并构建索引?如果没有强迫索引在实际查询中使用,有没有办法更新或做其他事情告诉服务器使用我的新索引?我可以告诉它使用新索引,因为"适应计划"使用索引显示它,加上查询执行时间从大约0.5秒下降到"瞬间"。
这个新索引将应用于我们客户的00个数据库,因此只需尝试确定分发此更新的最佳方式,而无需重新启动每个客户计算机上的各个服务。