Mysqli 简明教程
MySQLi - Indexes
数据库索引是一种数据结构,可以提高表中操作的速度。可以使用一个或多个列创建索引,既可以快速随机查找,也可以有效地对记录访问进行排序。
在创建索引时,应考虑创建 SQL 查询和在这些列上创建或多个索引的列。
实际上,索引也是表的一种类型,它保留主键或索引字段和指向实际表中每条记录的指针。
用户无法看到索引,它们仅用于加速查询,并将由数据库搜索引擎用来非常快速地查找记录。
INSERT 和 UPDATE 语句在具有索引的表上花费更多时间,而 SELECT 语句在这些表上变得快速。原因是在执行插入或更新时,数据库也需要插入或更新索引值。
Simple and Unique Index
可以在表上创建唯一索引。唯一索引意味着,两行不能有相同的索引值。以下是在表上创建索引的语法。
CREATE UNIQUE INDEX index_name ON table_name ( column1, column2,...);
你可以使用一列或多列来创建索引。例如,我们可以使用 NAME_INDEX 在 tutorials_inf 上创建一个索引。
CREATE UNIQUE INDEX NAME_INDEX ON tutorials_inf(name);
你可以在表上创建一个简单索引。只需从查询中省略 UNIQUE 关键字即可创建简单索引。简单索引允许表中有重复值。
如果你想按降序对列中的值进行索引,可以在列名后添加保留字 DESC。
mysql> CREATE UNIQUE INDEX NAME_INDEX ON tutorials_inf (name DESC);
ALTER command to add and drop INDEX
有四类用于向表中添加索引的语句 −
-
ALTER TABLE tbl_name ADD PRIMARY KEY (column_list) − 此语句添加一个主键,这意味着索引值必须唯一且不能为 NULL。
-
ALTER TABLE tbl_name ADD UNIQUE index_name (column_list) - 此语句创建一个索引,其值必须唯一(除了可能多次出现的 NULL 值)。
-
ALTER TABLE tbl_name ADD INDEX index_name (column_list) − 这添加了一个普通索引,其中任何值都可能出现多次。
-
ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list) − 这创建了一个特殊的 FULLTEXT 索引,用于文本搜索目的。
以下是将索引添加到现有表中的示例。
mysql> ALTER TABLE tutorials_inf ADD INDEX (id);
你还可以使用 DROP 子句和 ALTER 命令以相同的方式删除主键。尝试以下示例以删除上述创建的索引。
mysql> ALTER TABLE tutorials_inf DROP INDEX (c);
你还可以使用 DROP 子句和 ALTER 命令以相同的方式删除主键。尝试以下示例以删除上述创建的索引。
ALTER Command to add and drop PRIMARY KEY
你也可以添加主键。但请确保主键作用于 NOT NULL 列。
以下为向现有表格添加主键的示例。这将首先使列成为非空,再将其添加为主键。
mysql> ALTER TABLE tutorials_inf MODIFY id INT NOT NULL;
mysql> ALTER TABLE tutorials_inf ADD PRIMARY KEY (id);
您可以使用 ALTER 命令放弃主键,如下所示:
mysql> ALTER TABLE tutorials_inf DROP PRIMARY KEY;
要删除一个不是主键的索引,你必须指定索引名称。