小九最近要进行一些sql优化,特开此文记录
1.时间索引的使用
问题:查询一个特大表今日数据(今日有索引)
原SQL: SELECT * FROM test_table WHERE (to_days(`create_time `) = to_days(now()));
修改后: SELECT * FROM test_table WHERE create_time >= current_date();
关联知识:
now(), current_timestamp(); -- 当前日期时间 current_date(); -- 当前日期 current_time(); -- 当前时间 date('yyyy-mm-dd hh:ii:ss'); -- 获取日期部分 time('yyyy-mm-dd hh:ii:ss'); -- 获取时间部分 date_format('yyyy-mm-dd hh:ii:ss', '%d %y %a %d %m %b %j'); -- 格式化时间 unix_timestamp(); -- 获得unix时间戳 from_unixtime(); -- 从时间戳获得时间
DATE(DATE_SUB(NOW(), INTERVAL 1 DAY)) --返回一天之前的日期
补充: 查看表格全部索引(show index from tbname;)