SQL索引

索引是数据库的搜索引擎使用,以加快数据检索特定的查找表。简单地说,索引是一个指向表中的数据。数据库中的索引非常类似于在一本书的索引。

例如,如果你想引用一本书的所有页面以讨论某个话题,首先参考索引,其中列出了所有的主题字母顺序,然后被转介到一个或多个特定的页码。

索引有助于加快SELECT和WHERE子句查询,但它会减慢数据输入,使用UPDATE和INSERT语句。索引可创建或删除,但对数据不会有影响。

创建索引包括CREATE INDEX语句,它允许重命名索引,指定表和其中一个或多个列索引,并指示索引是否为升序或降序排序。

索引是唯一的,类似于UNIQUE约束,索引防止在列的列或组合在其上有一个索引重复条目。

CREATE INDEX命令:

CREATE INDEX的基本语法如下:

CREATE INDEX index_name ON table_name;

单列索引:

单列索引是一个基于只有创建表列。 其基本语法如下:

CREATE INDEX index_name
ON table_name (column_name);

唯一索引:

唯一索引不仅用于性能,而且要求数据的完整性。唯一索引不允许有任何重复值插入到表中。 其基本语法如下:

CREATE UNIQUE INDEX index_name
on table_name (column_name);

组合索引:

组合索引在表上的两个或多个列的索引。其基本语法如下:

CREATE INDEX index_name
on table_name (column1, column2);

是否要创建一个单列索引或复合索引,考虑到列,您可以使用非常频繁的查询的WHERE子句作为过滤条件。

应该有只有一个使用列,单列指数应的选择。如果有频繁使用WHERE子句作为过滤器中的两个或多个列,组合索引将是最好的选择。

隐式索引:

隐式索引是自动由数据库服务器创建对象时创建的索引。索引是主键约束和唯一性约束自动创建。

DROP INDEX命令:

索引可以使用SQL DROP命令删除。 应当谨慎删除索引时导致的性能可能会减慢或改善。

其基本语法如下:

DROP INDEX index_name;

您可以查看INDEX约束篇章查看索引的实际例子。

什么时候避免使用索引?

尽管索引的目的在于提高数据库的性能,以下几种情况应该避免使用。以下准则显示,当使用索引应该重新考虑:

  • 索引不应该用在小型表上。

  • 有频繁的,大批量更新或插入操作的表。

  • 索引不应该用于对包含大量NULL值的列。

  • 列经常操纵不应该被索引。


链接: https://fly63.com/course/32_1558