我刚发现mysql可以使用like查询日期时间:
like '2013-06-12%'
我想它不能使用索引。我在谷歌上搜索了一下,但没有直接找到这样的主题。所以我进行了一个测试,使用了一个拥有3308614条记录的表格。第一个SQL语句:
SELECT * FROM subscription t WHERE DATE(t.active_time) = '2013-06-30';
我们都知道这个SQL无法使用索引,需要4秒钟才能得到结果。第二个SQL:
SELECT * FROM subscription t WHERE t.active_time LIKE '2013-06-30%';
我不知道它是否可以使用索引,但它也需要4秒钟。 第三个SQL:
SELECT * FROM subscription t WHERE t.active_time > '2007-11-30' AND t.active_time < '2007-12-01';
我们都知道第三种SQL可以使用索引,并且它只需要0.016秒。
因此,我认为当查询日期时间字段时,“like”操作符不能使用索引,因为MySQL应该首先将日期时间字段转换为字符串,然后将字符串发送到“like”命令。 这个理解正确吗?
t.active_time = '2013-06-30'
。 - Justin