我在MySQL中有一个包含大量文章的表 这是表结构:
CREATE TABLE articles
(
id
char(32) default NULL,
title
char(192) default NULL,
time
int(10) unsigned default NULL,
image
char(255) default NULL,
views
mediumint(8) unsigned default '0',
category
char(128) default NULL
);
articles
一切都运作良好!
现在,我决定为我的文章创建TAGS
我制作了一个扫描所有文章的PHP脚本并创建了一个mysql表
以下是标签的表格结构:
id
title
time
是文章的内容
一篇文章可以有很多标签,一个标签可以分配给很多文章
image
views
category
INSERT INTO articles
VALUES ('0123456789abcdef0123456789abcdef','Article Title',1204149600,'http://www.example.com/image.jpg',1234,'sports');
<小时/>
我跑这个:
articles
我得到了这个结果:
CREATE TABLE tags
(
id
char(32) default NULL,
tag
char(192) default NULL
);
答案 0 :(得分:2)
看起来你有索引问题。请在“标签”表格中为id创建索引,在“文章”表格中创建id。 要创建索引,请参阅以下链接: http://dev.mysql.com/doc/refman/5.0/en/create-index.html
答案 1 :(得分:1)
您的表上没有索引可以让MySQL查找您请求的数据,因此必须遍历每个组合。
(样式)为tags
表提供自己的ID,并将id
重命名为article_id
ALTER TABLE标签更改id article_id char(32),添加列id int(11)not null auto_increment primary key;
为表标记提供标记
的索引ALTER TABLE标签ADD INDEX(tags,article_id);
为表articles
提供id的索引。如果仍然可以,请给它一个独特的索引。
ALTER TABLE文章ADD INDEX(id);
如果你的桌子会增长,我还会添加一个数字内部列:
ALTER TABLE articles ADD COLUMN tech_id int(11) not null primary key auto_increment;
如果系统变慢,您可以将表标记中的32-char-string更改引用到int tech_id
。