我的mySql数据库中只有一个表用于一个非常基本的网站,我使用php / mysql调用将用户记录添加到我称为“RegisteredUsers”的单个表中 - 每条记录都是:
(name, member number, name of their subfolder on the server).
对我的新要求 - 我的每个用户都可以输入零到5000个项目,并为每个项目键入文本说明。
每个用户的“物品”都是(早期人类)古代物品的(名称,描述) - 史前时代的泥罐,埋藏着其中一种法老的物品等等。 (名称,描述)元组将是有限大小的文本,即。 (name:text,length = 50; description:text,length = 512) - 该网站强制用户在名称和描述中非常简洁。
现在我必须允许每个用户添加他们的古董的任意数字(从0到5000),虽然我是数据库新手,但我倾向于创建第二个表并使用来自的“成员编号”第一个索引第二个表的表。
此第二张表的每条记录都包含以下字段:
(member number, name-of-the-antique, description).
我担心如果用户想要从第2张表中删除名为“Babylonia clay pot”的项目,并为用户提供多达5000件古董 - 当我搜索第二个数据库时,性能会受到影响对
member number=NN and name=One-Of-5000-Antiques.
这是正确的做法吗?
答案 0 :(得分:1)
像这样的性能问题的答案几乎总是索引。通常,您会在古董表中添加一列,这是一个数字的自动递增主键。因此,不删除项目“Babylonia clay pot”,而是删除ID为42的项目。此主键将被编入索引,并且无论您的表格有多大(在限制范围内),对ID的任何行的访问几乎都是即时的。显然,但你可能永远不会接近这些限制)。您还可以在name-of-the-antique
列上创建索引,但效率会降低(但仍然比没有索引快)。
在此处阅读索引:http://dev.mysql.com/doc/refman/5.1/en/create-index.html