等价的SQL,性能差异极大,数据库里设计了一个字段存储日期时间,但不是datetime类型,用了时间戳(int 11), 下面有2个SQL语句用于查询数据库,一个是把时间戳转成date进行查询,一个是把日期转成时间戳,直接用时间戳进行比对,虽然没有统计差多少,但从直觉上发现至少能差10倍以上
-- 性能较差的SQL,把数据库的时间戳转成datetime,用字符串比对 select bid,price,platform from bc_user_charged_list_wap_merge where from_unixtime(charged_time) like '20140116%' and (use_curr=0 or use_curr=30000); -- 性能较好的SQL,算出查询日期的时间戳直接比对 select bid,price,platform from bc_user_charged_list_wap_merge where charged_time >=1388505600 and charged_time < 1388592000 and use_curr in (0, 30000);