SQL 索引
SQL索引
SQL索引 是用于加快数据检索过程的特殊查找表。它们保存指向存储在数据库中的数据的指针,这使得在数据库表中定位所需数据记录变得更容易。
SQL索引的工作方式类似于书籍或期刊的索引。
虽然索引加速了数据检索查询(SELECT语句)的性能,但它会降低数据输入查询(UPDATE和INSERT语句)的性能。但是,这些索引对数据本身没有任何影响。
SQL索引需要在数据库中拥有自己的存储空间。尽管如此,用户无法在物理上查看它们,因为它们只是性能工具。
CREATE INDEX语句
可以使用 CREATE INDEX 语句在SQL中创建索引。此语句允许您命名索引,指定表和要索引的列,并指示索引是按升序还是降序排序。
最好在频繁查询数据检索的大表的列上创建索引。
语法
CREATE INDEX 的基本语法如下 –
CREATE INDEX index_name ON table_name;
索引的类型
使用CREATE INDEX语句可以创建各种类型的索引。它们包括:
- 唯一索引
-
单列索引
-
复合索引
-
隐式索引
唯一索引
唯一索引不仅用于提高性能,还用于数据完整性。唯一索引不允许插入重复的值到表中。当在数据库表上应用PRIMARY和UNIQUE约束时,会自动创建唯一索引,以防止用户插入重复的值到索引列中。基本语法如下所示。
CREATE UNIQUE INDEX index_name
on table_name (column_name);
单列索引
单列索引仅在一个表列上创建。语法如下。
CREATE INDEX index_name
ON table_name (column_name);
组合索引
组合索引是可在表的两个或更多列上创建的索引。其基本语法如下所示。
CREATE INDEX index_name
on table_name (column1, column2);
暗默索引
暗默索引是当对象创建时由数据库服务器自动创建的索引。例如,在MySQL数据库中在表上创建主键和唯一约束时会自动创建索引。
DROP INDEX语句
可以使用SQL的 DROP 命令来删除索引。删除索引可能会影响数据库的查询性能,因此只有在绝对必要时才需要删除索引。
基本的语法如下 –
DROP INDEX index_name;
何时应避免使用索引
尽管索引旨在提高数据库的性能,但有时候应避免使用索引。
以下准则表明在以下情况应重新考虑使用索引。
-
小表不应使用索引。
-
在进行频繁大批量更新或插入操作的表上不应使用索引。
-
不应在包含大量空值的列上使用索引。
-
经常进行操作的列不应被索引。