5

我有一个数据库,其中我的表当前正在使用,但没有定义索引。如果可能的话,我希望提高速度。我已经准备好索引,但想知道它是否也需要成为主键?此外,对于表中的旧记录,索引将为空。这是一个问题吗?我想知道最好的方法是什么。

这是当前的表结构(我打算只插入“id”作为索引)

Field   Type    Collation   Attributes  Null
user    varchar(255)    utf8_general_ci     No
pass    varchar(255)    utf8_general_ci     No
ts  varchar(255)    utf8_general_ci     No
lat varchar(255)    utf8_general_ci         No
4

2 回答 2

16

似乎对索引的真正含义存在误解。您不需要额外的字段。您可以对表中现有字段的一个或多个创建索引,如下所示:

alter table xxxx add index idx_user (user);

创建此索引不会将任何字段添加到您的表中。相反,MySQL 将在后台创建一个额外的树以加快查找速度。每当您更改表中的数据时,此树会自动更新,因此它不是免费提供的。但在通常用于查找表中行的列上创建索引可能是个好主意。

您还应该阅读一般索引:https ://dev.mysql.com/doc/refman/5.7/en/mysql-indexes.html

于 2013-08-28T14:47:58.390 回答
2

试试这样: -

CREATE FULLTEXT INDEX `idxtags` ON `table1`(`tags`)

如果你愿意,你也可以试试这个: -

ALTER TABLE Tablename ADD id Int NOT NULL AUTO_INCREMENT PRIMARY KEY;

这将在行上添加唯一索引。

于 2013-08-28T14:37:33.017 回答