索引是数据库的搜索引擎使用,以加快数据检索特定的查找表。简单地说,索引是一个指向表中的数据。数据库中的索引非常类似于在一本书的索引。
例如,如果你想引用一本书的所有页面以讨论某个话题,首先参考索引,其中列出了所有的主题字母顺序,然后被转介到一个或多个特定的页码。
索引有助于加快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值的列。
-
列经常操纵不应该被索引。