问题在很多的场景中,都会使用到排序,然后分页展示。如果有对应的索引,就可以避免额外的文件排序操作,只需要扫描索引,效率通常会不错。假设我们维护着一个游戏积分排行榜,排行榜有10万个用户,按积分高低排序,界面上每页展示10个用户。CREATE TABLE `game_list` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id', ...
作为一个curd boy,整天和mysql打交道。索引是我们写sql语句时,一个经常需要考虑的问题。索引对良好的性能非常关键,在数据量少时,不恰当的索引对性能的影响可能还不明显,但随着数据量增多,性能则会急剧下降。索引优化应该是对查询性能优化最简单有效的手段了,索引能够轻易将查询性能提高几个数量级。索引就像一本书的目录,如果没有目录,我们查找其中的某个知识点,就需要翻阅整本书。有了目录,我们...
最近在编码中,遇到了一个坑。我们有一张用户表CREATE TABLE shu_users ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id', `name` char(20) NOT NULL COMMENT '用户名', `mobile` char(11) NOT NULL COMMENT '手机号码', PRIMAR...
使用explain分析sql性能时,里面有一列key_len。该列显示了MySQL使用的索引的字节数。对于多列组成的联合索引,如果MySQL只是使用了联合索引里的某些列,通过key_value的值可以算出是哪些列。但是key_value的值是怎样计算得到的?上图中字段mobile的类型是char(11),key_value的值是33。查阅了资料,总结下部分计算规则。int - 4个字节,bi...