2013-08-28 74 views
2

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

这是当前表stucture(我打算只将“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

对于索引给你它需要它可能被用来识别行被检索索引的速度提高。也往往需要建立适当的规范化表格。你能给出一些关于所持有的数据类型和查询运行类型的指示吗? –

回答

1

尝试这样的: -

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

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

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

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

10

似乎有一个关于索引究竟是什么的误解。你不需要额外的字段。您可以在表中这样的现有油田的一个或多个创建索引:

alter table xxxx add index idx_user (user); 

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

你应该也很可能在一般的阅读了关于指标:https://dev.mysql.com/doc/refman/5.7/en/mysql-indexes.html

+0

thx的提示! – Bachzen