select count(*) from Gamerecord g where g.tableid = ? and g.endtime like '%2014-09-26%' ; like无优化余地,只能改写同等sql。 select count(*) from Gamerecord g where g.tableid = ? and date(g.endtime)= 2014-09-26;
endtime>'2014-10-11',时间字段加这个%,不对的
select count(*) from Gamerecord g where g.tableid = ? and g.endtime >= '2014-09-26' and g.endtime < '2014-09-27' ;然后给endtime 加个索引。 记得条件里用函数或者like都会导致索引不起作用。
我想知道的是:
你们的endtime 以什么结构存储的?
为什么你们要用like?为什么like 的前面要加”%“这样不走索引啊你们的endtime 不会是字符串吧!存的是日期的串联?像”2011-01-01 2011-02-01 2011-03-01“这样的?
(2)like的左边不能加%, 右边可以加%,左边加了不能用索引(当然如果业务要求一定要左右都有%那没办法)LZ你这个问题,建议就是把列改成日期型
where g.tableid = ? and g.endtime like '%2014-09-26%' ;
like无优化余地,只能改写同等sql。
select count(*) from Gamerecord g
where g.tableid = ? and date(g.endtime)= 2014-09-26;
select count(*) from Gamerecord g where g.tableid = ? and g.endtime >= '2014-09-26' and g.endtime < '2014-09-27' ;然后给endtime 加个索引。
记得条件里用函数或者like都会导致索引不起作用。