数据库查询时,索引能显著提升效率,因此常在关键字段建立索引。如交易日期(trans_date)查询,通常加索引以优化大量数据查询。建立union_idx_query索引后,以trans_date为查询条件时,索引可高效运行。然而,使用“>”进行范围查询,且trans_date已建立索引,是否走索引?答案并非肯定。通过explain命令查看,发现有时SQL语句未走索引,而是执行全表扫描。若参数值稍有变化,explain结果可能显示索引已被使用。为何相同查询语句,仅参数不同,索引使用状态却有异?答案在于DBMS判断全表扫描可能更高效,从而放弃走索引。Mysql在索引扫描行记录数超过全表10%-30%时,可能自动转为全表扫描,即便强制执行索引也无效。在进行范围查询时,此现象常见,具体临界值因场景而异。使用上述查询方式,希望走索引,需注意添加额外限制条件或采用其他方式确保索引有效性。若在项目中遇到此问题,应特别关注并采取相应措施。