免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1829 | 回复: 1
打印 上一主题 下一主题

【讨论中】求hdwiki mysql 5.5 int字段分区方案 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-04-26 11:25 |只看该作者 |倒序浏览
本帖最后由 cenalulu 于 2013-04-28 13:56 编辑

表结构如下:
  1. CREATE TABLE wiki_doc (
  2.   `did` int(10) unsigned NOT NULL auto_increment,
  3.   `cid` int(6) unsigned NOT NULL,
  4.   `letter` char(1) NOT NULL,
  5.   `title` int(10) NOT NULL default '0',
  6.   `tag` varchar(250) NOT NULL,
  7.   `summary` varchar(250) NOT NULL,
  8.   `content` mediumtext NOT NULL,
  9.   `author` varchar(15) NOT NULL default '',
  10.   `authorid` mediumint(8) unsigned NOT NULL default '0',
  11.   `time` int(10) unsigned NOT NULL default '0',
  12.   `lastedit` int(10) unsigned NOT NULL default '0',
  13.   `lasteditor` char(15) NOT NULL default '',
  14.   `lasteditorid` mediumint(8) unsigned NOT NULL default '0',
  15.   `views` int(10) unsigned NOT NULL default '0',
  16.   `edits` mediumint(8) unsigned NOT NULL default '0',
  17.   `editions` mediumint(8) unsigned NOT NULL DEFAULT '0',
  18.    comments mediumint(8) unsigned NOT NULL DEFAULT '0',
  19.    votes mediumint(8) unsigned NOT NULL DEFAULT '0',
  20.   `visible` tinyint(1) NOT NULL default '1',
  21.   `locked` tinyint(1) NOT NULL default '0',
  22.   PRIMARY KEY  (`did`),
  23.   KEY `title` (`title`),
  24.   KEY `cid` (`cid`),
  25.   KEY `authorid` (`authorid`),
  26.   KEY `letter` (`letter`),
  27.   KEY `lastedit` (`lastedit`),
  28.   KEY `time` (`time`)
  29. ) TYPE=MyISAM;
复制代码
我已经使用hash针对did字段进行了分区。但是我搜索字段通常是select title, tag, ... from wiki_doc where title= xxx。
这样我用did分区的话,就跟没有分没多大区别了。

我现在希望能够用title字段进行分区(忘掉hash(did)分区,重新开始分)。

问题是did是主键,我使用alter table wiki_doc drop primary key,报错。
我在http://stackoverflow.com/上查了下,有人给出了类似的答案:

先去掉did的自增,然后去掉primary key,在title上建primary最后再把自增加到did上,这样不知道可不可以?(我晚上回去试试)

请问像这种情况该如何分比较好,谢谢了!

论坛徽章:
0
2 [报告]
发表于 2013-04-27 14:07 |只看该作者
  1. CREATE TABLE wiki_doc (
  2.   `did` int(10) unsigned NOT NULL auto_increment,
  3.   `cid` int(6) unsigned NOT NULL,
  4.   `letter` char(1) NOT NULL,
  5.   `title` int(10) NOT NULL default '0',
  6.   `tag` varchar(250) NOT NULL,
  7.   `summary` varchar(250) NOT NULL,
  8.   `content` mediumtext NOT NULL,
  9.   `author` varchar(15) NOT NULL default '',
  10.   `authorid` mediumint(8) unsigned NOT NULL default '0',
  11.   `time` int(10) unsigned NOT NULL default '0',
  12.   `lastedit` int(10) unsigned NOT NULL default '0',
  13.   `lasteditor` char(15) NOT NULL default '',
  14.   `lasteditorid` mediumint(8) unsigned NOT NULL default '0',
  15.   `views` int(10) unsigned NOT NULL default '0',
  16.   `edits` mediumint(8) unsigned NOT NULL default '0',
  17.   `editions` mediumint(8) unsigned NOT NULL DEFAULT '0',
  18.    comments mediumint(8) unsigned NOT NULL DEFAULT '0',
  19.    votes mediumint(8) unsigned NOT NULL DEFAULT '0',
  20.   `visible` tinyint(1) NOT NULL default '1',
  21.   `locked` tinyint(1) NOT NULL default '0',
  22.   PRIMARY KEY  (`did`,`title`),
  23.   KEY `title` (`title`),
  24.   KEY `cid` (`cid`),
  25.   KEY `authorid` (`authorid`),
  26.   KEY `letter` (`letter`),
  27.   KEY `lastedit` (`lastedit`),
  28.   KEY `time` (`time`)
  29. ) TYPE=MyISAM;
复制代码
已经解决,新建个类似上面的表,将title包含进pk中,就可以了!
不知道这个效率是否可以?!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP