【问题标题】:Add Index to Existing MySQL Table向现有 MySQL 表添加索引
【发布时间】:2013-08-28 14:35:43
【问题描述】:

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

这是当前的表结构(我打算只插入 '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

【问题讨论】:

  • 要让索引提高速度,它必须是一个可以用来识别要检索的行的索引。还有一个人往往需要建立适当的规范化表。您能否就所持有的数据类型和查询运行的类型给出某种指示?

标签: mysql sql indexing


【解决方案1】:

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

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;
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-12
      相关资源
      最近更新 更多