数据库索引是一种提高表中操作速度的数据结构.可以使用一列或多列创建索引,为快速随机查找和对记录的访问的有效排序提供基础.
创建索引时,应考虑所有列将用于进行SQL查询并在这些列上创建一个或多个索引.
实际上,索引也是一种表,它保留主键或索引字段以及指向每个列的指针.记录到实际的表中.
用户无法看到索引,它们只是用于加速查询,数据库搜索引擎将使用它来快速定位记录.
INSERT和UPDATE语句在具有索引的表上花费更多时间,而SELECT语句在这些表上变快.原因是在进行插入或更新时,数据库也需要插入或更新索引值.
你可以在表上创建唯一索引.唯一索引意味着两行不能具有相同的索引值.以下是在表上创建索引的语法.
CREATE UNIQUE INDEX index_name ON table_name ( column1, column2,...);
您可以使用一列或多列来创建索引.
例如,我们可以创建索引 tutorials_tbl 使用 tutorial_author .
CREATE UNIQUE INDEX AUTHOR_INDEX ON tutorials_tbl (tutorial_author)
您可以在表上创建一个简单的索引.只需从查询中省略 UNIQUE 关键字即可创建简单索引. Simple索引允许表中的重复值.
如果要按降序对列中的值进行索引,可以在列名后面添加保留字DESC.
mysql> CREATE UNIQUE INDEX AUTHOR_INDEX ON tutorials_tbl (tutorial_author DESC)
有四种类型用于向表添加索引的语句 :
ALTER TABLE tbl_name ADD PRIMARY KEY(column_list) : 此语句添加 PRIMARY KEY ,这意味着索引值必须是唯一的且不能为NULL.
ALTER表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 testalter_tbl ADD INDEX (c);
您可以使用 DROP 子句和ALTER命令删除任何INDEX.
尝试以下示例来删除上面创建的索引.
mysql> ALTER TABLE testalter_tbl DROP INDEX (c);
您可以使用DROP子句和ALTER命令删除任何INDEX.
您也可以以相同的方式添加主键.但请确保主键适用于非NULL的列.
以下代码块是在现有表中添加主键的示例.这将首先使列NOT NULL,然后将其添加为主键.
mysql> ALTER TABLE testalter_tbl MODIFY i INT NOT NULL; mysql> ALTER TABLE testalter_tbl ADD PRIMARY KEY (i);
您可以使用ALTER命令删除主键,如下所示;
mysql> ALTER TABLE testalter_tbl DROP PRIMARY KEY;
要删除不是PRIMARY KEY的索引,必须指定索引名称.
您可以使用 SHOW INDEX 命令列出与表关联的所有索引.垂直格式输出(由\G指定)通常对此语句有用,以避免长线环绕:
尝试以下示例 :
mysql> SHOW INDEX FROM table_name\G ........