我有一个数据库,我的表当前正在使用,没有定义索引。我希望尽可能提高速度。我已经准备好了索引,但想知道它是否也需要成为主键?此外,对于表中的旧记录,索引将为null。这是一个问题吗?我想知道最好的方法是什么。
这是当前的表格结构(我计划只插入'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
答案 0 :(得分:10)
似乎对指数究竟是什么存在误解。您不需要其他字段。您可以在表中的现有字段中的一个或多个上创建索引,如下所示:
alter table xxxx add index idx_user (user);
创建此索引不会向表中添加任何字段。相反,MySQL将在后台创建一个额外的树,以便更快地进行查找。每当您更改表中的数据时,此树都会自动更新,因此它不是免费提供的。但是,在通常用于查找表中行的列上创建索引可能是个好主意。
您还应该阅读一般的索引:https://dev.mysql.com/doc/refman/5.7/en/mysql-indexes.html
答案 1 :(得分:2)
试试这样: -
CREATE FULLTEXT INDEX `idxtags` ON `table1`(`tags`)
如果你想要,你也可以尝试: -
ALTER TABLE Tablename ADD id Int NOT NULL AUTO_INCREMENT PRIMARY KEY;
这会在行上添加唯一索引。