我只是发现mysql可以使用如下查询日期时间:
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'在查询datetime字段时不能使用索引,因为mysql应该先将datetime字段转换为字符串并将字符串发送给like命令。这个对吗 ?