巧建sum索引提高MySQL至少100%的效率[MySQL防范]
本文“巧建sum索引提高MySQL至少100%的效率[MySQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
MySQL数据库巧建sum索引,可以提高至少100%的效率,办法以下:
有两个表,表a
CREATE TABLE `a` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`fid` smallint(6) unsigned NOT NULL DEFAULT '0',`cnt` smallint(6) unsigned NOT NULL DEFAULT '0',
...
PRIMARY KEY (`id`),
KEY `idx_fid` (`fid`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8
表b
CREATE TABLE `b` (
`fid` smallint(6) unsigned NOT NULL AUTO_INCREMENT,
`name` char(50) NOT NULL DEFAULT '',
...
...
...
PRIMARY KEY (`fid`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8
操作SQL以下:
SELECT COUNT(*) AS num1, SUM(a.cnt)+COUNT(*) AS num2
FROM a, b
WHERE b.fid='10913' AND a.fid=b.fid
我们先看下履行筹划:
我们可以看到扫描行数是229049行,履行时间:
太可怕了,运行set profiling=1,让我们看看时间主要损耗在那边?
sending data耗费的时间较长,那这段时间毕竟是做什么的呢?先看下这个吧:http://renxijun.blog.sohu.com/82906360.html
意思是它在为select语句预备数据,办理办法:
建索引:
create index idx_fid_cnt on a (fid,cnt);
再看下,履行筹划和履行时间:
总结:利用得当的索引,是sql的效率倍增,近似sum的函数还有min(),max(),这些都需求在字段上建索引
以上是“巧建sum索引提高MySQL至少100%的效率[MySQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |