给现有的MySQL表添加索引

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

2
为了提高速度,索引需要被用于识别要检索的行。此外,人们往往需要构建正确规范化的表格。你能否给出所保存数据的类型和运行的查询类型的某种指示? - Captain Payalytic
2个回答

18

对于索引的真正含义似乎存在一些误解。您不需要额外的字段。您可以像这样在表中现有字段上创建一个或多个索引:

alter table xxxx add index idx_user (user);

创建这个索引不会向您的表中添加任何字段。相反,MySQL将在后台创建一个额外的树以加快查找速度。每当您更改表中的数据时,该树都会自动更新,因此它并非免费提供。但是,在通常用于查找表中行的列上创建索引可能是一个好主意。
您也应该阅读有关索引的一般信息:https://dev.mysql.com/doc/refman/5.7/en/mysql-indexes.html

2
试试这样做:
CREATE FULLTEXT INDEX `idxtags` ON `table1`(`tags`)

如果您想尝试,也可以使用以下方法:
ALTER TABLE Tablename ADD id Int NOT NULL AUTO_INCREMENT PRIMARY KEY;

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接