2011-08-05 44 views
0

我对mysql有一些疑问。我使用phpmyadmin作为xampp包的一部分。PHPMyAdmin中的索引和关键问题

所以:

  1. 我定义的字段我的表被打上标记为指标。过了一段时间,我改变了字段的名称,但注意到在键名下面留下了旧的名字。这是为什么?它会带来问题吗?

  2. 我也是在一个表中定义多个索引时,他们莫名其妙地聚在一起下一个关键发现,但只有字段显示一个在另一个之上。

我已经建立了一个数据库,但做了这些改变后,我不想在错误的基础设施上建造。我应该重建吗?

回答

0

键名基本上都是参考,有哪些字段,它们实际上是索引没有影响。这些名称使您在使用它们时可以更轻松地引用密钥(添加/修改/删除密钥),但除此之外,它完全是信息性的。如果你没有提供密钥名称,MySQL将自动分配一个密钥名称,它通常基于密钥中的第一个字段。

不确定你对索引的含义。您必须显示您的SQL,但是:

CREATE TABLE ... 
... 
INDEX indexA (fieldA, fieldB), 
INDEX indexB (fieldC, fieldD), 
INDEX indexC (fieldE) 

将创建3个索引,其中两个索引各包含两个字段。在()内指定的任何字段名称都将成为该索引的一部分。

+0

什么是一个指数的两个字段的含义?是否像将两个字段值合并为一个索引方式? – Ted

+0

您可以索引任何您想要的字段组合。一般来说,如果组合字段总是在where/join子句中一起使用,那么你会做一个多字段索引。维护一个多字段索引比多个单字段索引稍微便宜。 –

+0

好的。我想我需要分化。每个字段一个索引。为什么phpmyadmin会一直显示它们? – Ted

0

我不认为你应该重建。

回复您的第一个问题:你的 看到的是什么索引名没有变化,但它仍指向重命名

重新您的第二个问题是场: 不知道你的意思是“济济一堂下一个关键“,如果它仍然是一个你可以在这里发布屏幕截图的问题,它可能是一个myphp用户界面。

一般来说,你会希望避免在表上创建大量的索引CUS它将使插入和删除慢。 删除索引是一个没有破坏性的操作,所以你可以尝试一切你想要为你的用例找到最高级的模式。 你也可能想,如果寻找到一些所谓的正常化您关心PREF浪漫

+0

现在我不在我的编辑范围内,但是你是否在说我可以识别字段名称,但键名与任何字段无关? – Ted

+0

在某些表中,键名是单个的,但似乎是引用两个字段(一个在另一个之上),引用两个字段的单个键名和每个字段的单个键名之间必须有区别。 – Ted