CREATE TABLE IF NOT EXISTS `wz_article` ( `aid` mediumint(7) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(150) NOT NULL DEFAULT "", `smalltitle` varchar(100) NOT NULL DEFAULT "", `fid` mediumint(7) unsigned NOT NULL DEFAULT "0", `mid` mediumint(5) NOT NULL DEFAULT "0", `fname` varchar(50) NOT NULL DEFAULT "", `hits` mediumint(7) NOT NULL DEFAULT "0", `pages` smallint(4) NOT NULL DEFAULT "0", `comments` mediumint(7) NOT NULL DEFAULT "0", `posttime` int(10) NOT NULL DEFAULT "0", `list` int(10) NOT NULL DEFAULT "0", `uid` mediumint(7) NOT NULL DEFAULT "0", `username` varchar(180) NOT NULL DEFAULT "", `author` varchar(30) NOT NULL DEFAULT "", `copyfrom` varchar(100) NOT NULL DEFAULT "", `copyfromurl` varchar(150) NOT NULL DEFAULT "", `titlecolor` varchar(15) NOT NULL DEFAULT "", `fonttype` tinyint(1) NOT NULL DEFAULT "0", `picurl` varchar(150) NOT NULL DEFAULT "0", `ispic` tinyint(1) NOT NULL DEFAULT "0", `yz` tinyint(1) NOT NULL DEFAULT "0", `yzer` varchar(30) NOT NULL DEFAULT "", `yztime` int(10) NOT NULL DEFAULT "0", `levels` tinyint(2) NOT NULL DEFAULT "0", `levelstime` int(10) NOT NULL DEFAULT "0", `keywords` varchar(100) NOT NULL DEFAULT "", `jumpurl` varchar(150) NOT NULL DEFAULT "", `iframeurl` varchar(150) NOT NULL DEFAULT "", `style` varchar(15) NOT NULL DEFAULT "", `template` varchar(255) NOT NULL DEFAULT "", `target` tinyint(1) NOT NULL DEFAULT "0", `ip` varchar(15) NOT NULL DEFAULT "", `lastfid` mediumint(7) NOT NULL DEFAULT "0", `money` mediumint(7) NOT NULL DEFAULT "0", `buyuser` text NOT NULL, `passwd` varchar(32) NOT NULL DEFAULT "", `allowdown` varchar(150) NOT NULL DEFAULT "", `allowview` varchar(150) NOT NULL DEFAULT "", `editer` varchar(30) NOT NULL DEFAULT "", `edittime` int(10) NOT NULL DEFAULT "0", `begintime` int(10) NOT NULL DEFAULT "0", `endtime` int(10) NOT NULL DEFAULT "0", `description` text NOT NULL, `lastview` int(10) NOT NULL DEFAULT "0", `digg_num` mediumint(7) NOT NULL DEFAULT "0", `digg_time` int(10) NOT NULL DEFAULT "0", `forbidcomment` tinyint(1) NOT NULL DEFAULT "0", `ifvote` tinyint(1) NOT NULL DEFAULT "0", `heart` varchar(255) NOT NULL DEFAULT "", `htmlname` varchar(100) NOT NULL DEFAULT "", PRIMARY KEY (`aid`), KEY `fid` (`fid`), KEY `hits` (`hits`,`yz`,`fid`,`ispic`), KEY `lastview` (`yz`,`lastview`,`fid`,`ispic`), KEY `list` (`list`,`yz`,`fid`,`ispic`), KEY `ispic` (`ispic`), KEY `uid` (`uid`), KEY `levels` (`levels`), KEY `digg_num` (`digg_num`), KEY `mid` (`mid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=805370 ;
如上面的代码 是一个文章的SQL 现在80万数据了 慢的蜗牛一样了 想进行分区
高手们有什么好的办法吗 根据aid 每10万进行一个分区怎样?
怎么分?现有的数据怎么规整下?
特来求帮助各位高手 万分感谢了 分不多了 全部送上
解决方案
18
1、80万数据量不算大,可以优化下相关sql或调整下索引
2、假如数据量还一直不断增加,要分区的话,还是根据业务特点确定按哪个字段分区,例如经常有按aid的查询,则可以按aid分区
3、怎么分区,还要看分区字段的类型,如是int型,可以按range或hash;假如是time型,则按月或年进行range较好
个人观点,如有不妥,请大家指正
2、假如数据量还一直不断增加,要分区的话,还是根据业务特点确定按哪个字段分区,例如经常有按aid的查询,则可以按aid分区
3、怎么分区,还要看分区字段的类型,如是int型,可以按range或hash;假如是time型,则按月或年进行range较好
个人观点,如有不妥,请大家指正
19
本人看你索引页建了不少,慢可以优化。
你可以把慢的语句贴出来,分析一下执行计划看看。
分区表在大部分情况下,并不能很有效的提高查询的性能,反而,有可能用了分区表之后,速度会更慢
你可以把慢的语句贴出来,分析一下执行计划看看。
分区表在大部分情况下,并不能很有效的提高查询的性能,反而,有可能用了分区表之后,速度会更慢