一业务环境,某个查询很慢,一般需要几分钟到十几分钟才有结果,检查发现是一保存了好几年的历史表数据, 其实一般都只是查询本年度的数据, 请问如何优化?
大概查询可能如下(当然实际复杂很多):
select a,b,c,d from his where a = '未确定';
当然,如果开发人员在SQL中加入一个时间的限制,如:
select a,b,c,d from his where a = '未确定' and orderdate > toyear;
感觉能改善。
但如果开发人员不修改, 能否解决问题?
分区? 使用全局索引? 还上局部索引?
补充点说明:表中有3-4千万条纪录,但查询返回一般只有几十条纪录,而且基本上都上本年度的,但查询又没有利用到日期字段对应的索引
|