多表关联查询,其中一张表有几百万条数据,然后通过时间筛选近3个月的数据,但是数据库库存的时间字段是varchar的,得转成时间类型,这样是不是不能走索引了?用explain看到的结果是走了全表扫描,查询的时间非常长,不知道有什么好的优化方案?
目前写的查询语句大概类似于这样的,C表就是大数据量的表:
select A.*
from A
inner join B on B.eid=A.eid
left join (
select eid from C where STR_TO_DATE(time, '%Y-%m-%d') > DATE_ADD(NOW(), INTERVAL -3 MONTH)) C on C.eid=B.eid