标题: mysql索引实践记录

时间: 2014-03-06 20:23:27

正文:

大公司高度专业化, 造成人的知识也更专业化. 在腾讯那么多年,很少用 mysql , 于是 mysql 成了我熟悉的陌生人, 尤其是索引, 以前记得还纠结 field like '%hick%' 和 field like 'hick%' 的性能差异, 结果今天实验发现, 这二者区别竟然不大, 不确认是不是有什么其他因素, 但是今天实践学习到俩点:

        转载请注明出处 http://blog.hickwu.com/posts/323 by Hick

一个是在没有索引的情况下, 不管是 like '%hick%' 还是 like 'hick%' 这样的查询条件, 几百万的数据情况下, 查询消耗差不多, 具体来说我实践的字段是 '2014-01-01 00:33:11' 这样的 datetime, 甚至换成 field > '2014-01-01 00:33:11' and field < '2014-01-02 00:33:11' 这样的也没什么差别: 没有索引的情况下, 都是逐行遍历匹配查询条件, 差别不大.

创建索引以后, like 和 > 这样的比较符的差别立刻就显现出来了. 因为查询的时候还有根据另外一个字段 status 查询, 实践发现, 无论 where 条件那个先写, mysql 自助选择索引, 不知道是按照什么规则.

还遇到一个比较费解的, 明明有索引, 即使查询条件用到了对应字段的数据中位数, explain 显示还是没用到索引, 但是 possiblekeys 中列出来只有一个 update_time , 难道是数据量太小, mysql 认为没有必要用索引?

explain select * from yy_items where update_time > '2014-03-06 14:31:43'

查看更多文章
分享到:


分享到: