mysql明明有索引,为什么没有用索引?可能是数据类型惹的祸!!!

今天做一个表关联,用的是复合索引,两张表索引关系如下:

create index dd_lbn on fm_zc_risk_analysis_loan_and_overdue(data_date,loan_bill_no);#表1
create index dd_lbn on fm_zc_risk_daichang_rollup(data_date,loan_bill_no);#表2

两表关联,竟然跑不出结果!!!

用执行计划看了一下,竟然没有用到索引!!(如图)

EXPLAIN select *
from fm_zc_risk_analysis_loan_and_overdue his
       left join fm_zc_risk_daichang_rollup dc on his.data_date=dc.data_date and his.loan_bill_no=dc.loan_bill_no
;

 

show index from fm_zc_risk_analysis_loan_and_overdue;
show index from fm_zc_risk_daichang_rollup;

索引确实存在,那问题在哪呢?

看了下数据类型:

desc fm_zc_risk_analysis_loan_and_overdue;
desc fm_zc_risk_daichang_rollup;

mysql明明有索引,为什么没有用索引?可能是数据类型惹的祸!!!_第1张图片

mysql明明有索引,为什么没有用索引?可能是数据类型惹的祸!!!_第2张图片

data_date的字段类型不一样,一个date,一个varchar。

 

调整了一下表2字段data_date的类型为date

重新看了下执行计划,索引终于用上了!!!

 

你可能感兴趣的:(mysql明明有索引,为什么没有用索引?可能是数据类型惹的祸!!!)