- SQL 教程
- SQL - 首页
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 数据库
- SQL - 语法
- SQL - 数据类型
- SQL - 运算符
- SQL - 表达式
- SQL 数据库
- SQL - 创建数据库
- SQL - 删除数据库
- SQL - 选择数据库
- SQL - 重命名数据库
- SQL - 显示数据库
- SQL - 备份数据库
- SQL 表
- SQL - 创建表
- SQL - 显示表
- SQL - 重命名表
- SQL - 截断表
- SQL - 克隆表
- SQL - 临时表
- SQL - 修改表
- SQL - 删除表
- SQL - 删除表数据
- SQL - 约束
- SQL 查询
- SQL - INSERT 查询
- SQL - SELECT 查询
- SQL - SELECT INTO
- SQL - INSERT INTO SELECT
- SQL - UPDATE 查询
- SQL - DELETE 查询
- SQL - 排序结果
- SQL 视图
- SQL - 创建视图
- SQL - 更新视图
- SQL - 删除视图
- SQL - 重命名视图
- SQL 运算符和子句
- SQL - WHERE 子句
- SQL - TOP 子句
- SQL - DISTINCT 子句
- SQL - ORDER BY 子句
- SQL - GROUP BY 子句
- SQL - HAVING 子句
- SQL - AND & OR
- SQL - 布尔 (BIT) 运算符
- SQL - LIKE 运算符
- SQL - IN 运算符
- SQL - ANY, ALL 运算符
- SQL - EXISTS 运算符
- SQL - CASE
- SQL - NOT 运算符
- SQL - 不等于
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 运算符
- SQL - UNION 运算符
- SQL - UNION vs UNION ALL
- SQL - INTERSECT 运算符
- SQL - EXCEPT 运算符
- SQL - 别名
- SQL 连接
- SQL - 使用连接
- SQL - 内连接
- SQL - 左连接
- SQL - 右连接
- SQL - 交叉连接
- SQL - 全连接
- SQL - 自连接
- SQL - DELETE 连接
- SQL - UPDATE 连接
- SQL - 左连接 vs 右连接
- SQL - UNION vs JOIN
- SQL 密钥
- SQL - 唯一键
- SQL - 主键
- SQL - 外键
- SQL - 组合键
- SQL - 候选键
- SQL 索引
- SQL - 索引
- SQL - 创建索引
- SQL - 删除索引
- SQL - 显示索引
- SQL - 唯一索引
- SQL - 聚簇索引
- SQL - 非聚簇索引
- 高级 SQL
- SQL - 通配符
- SQL - 注释
- SQL - 注入
- SQL - 托管
- SQL - MIN & MAX
- SQL - NULL 函数
- SQL - CHECK 约束
- SQL - DEFAULT 约束
- SQL - 存储过程
- SQL - NULL 值
- SQL - 事务
- SQL - 子查询
- SQL - 处理重复项
- SQL - 使用序列
- SQL - 自动递增
- SQL - 日期和时间
- SQL - 游标
- SQL - 公共表表达式
- SQL - GROUP BY vs ORDER BY
- SQL - IN vs EXISTS
- SQL - 数据库调优
- SQL 函数参考
- SQL - 日期函数
- SQL - 字符串函数
- SQL - 聚合函数
- SQL - 数值函数
- SQL - 文本和图像函数
- SQL - 统计函数
- SQL - 逻辑函数
- SQL - 游标函数
- SQL - JSON 函数
- SQL - 转换函数
- SQL - 数据类型函数
- SQL 有用资源
- SQL - 问答
- SQL - 快速指南
- SQL - 有用函数
- SQL - 有用资源
- SQL - 讨论
SQL - 创建索引
索引是快速检索 SQL 数据库中数据的有效方法。它是一个数据库对象,引用存储在表中的数据,从而显著提高数据库的查询和应用程序性能。
SQL 中的索引过程类似于书籍中的索引:它是一种表形式的数据库对象,包含数据位置的详细信息,并拥有单独的存储空间。
尽管索引有助于加快搜索查询速度,但用户无法直接看到这些索引的运行情况。
什么是 SQL 索引?
SQL 索引是一个特殊的查找表,有助于有效地搜索或查询数据库表以检索所需数据。例如,当我们尝试使用连接从多个表检索数据时,索引可以提高查询性能。
随着数据量的增长,索引用于优化任何关系数据库管理系统 (RDBMS) 的查询性能。因此,建议将其用于频繁查询的大型数据库表。
创建 SQL 索引
可以使用CREATE INDEX语句在 SQL 数据库中表的单个或多个列上创建索引。
语法
以下是 SQL 中CREATE INDEX语句的语法:
CREATE INDEX index_name ON table_name (column_name1, column_name2,... column_nameN);
这里:
- index_name 指定要创建的索引的名称。
- table_name 指定要创建索引的表的名称。
- (column_name1, column_name2...column_nameN) 是正在创建索引的一个或多个列的名称。
示例
要在数据库表上创建索引,我们首先需要创建一个表。因此,在此示例中,我们使用以下查询创建一个名为CUSTOMERS的表:
CREATE TABLE CUSTOMERS( ID INT NOT NULL, NAME VARCHAR(15) NOT NULL, AGE INT NOT NULL, ADDRESS VARCHAR(25), SALARY DECIMAL(10, 4), PRIMARY KEY(ID)); );
然后,使用以下查询将一些值插入 CUSTOMERS 表中:
INSERT INTO CUSTOMERS VALUES (1, 'Ramesh', '32', 'Ahmedabad', 2000), (2, 'Khilan', '25', 'Delhi', 1500), (3, 'Kaushik', '23', 'Kota', 2000), (4, 'Chaitali', '25', 'Mumbai', 6500), (5, 'Hardik','27', 'Bhopal', 8500), (6, 'Komal', '22', 'Hyderabad', 9000), (7, 'Muffy', '24', 'Indore', 5500);
创建表后,使用以下查询为 CUSTOMERS 表中名为NAME的列创建索引:
CREATE INDEX index_name ON CUSTOMERS(NAME);
输出
执行上述查询后,将获得如下输出:
Query OK, 0 rows affected (0.06 sec) Records: 0 Duplicates: 0 Warnings: 0
验证
以下 SHOW INDEX 查询用于显示在现有表上创建的所有索引。
SHOW INDEX FROM CUSTOMERS;
在获得的列表中,您可以找到列名 NAME,以及索引列表中的 ID。
表 | 非唯一 | 键名 | 索引中的序列 | 列名 |
---|---|---|---|---|
客户 | 0 | 主键 | 1 | ID |
客户 | 1 | index_name | 1 | NAME |
在多个字段上创建索引
我们还可以使用 CREATE INDEX 语句在表的多个字段(或列)上创建索引。为此,您只需要传递要创建索引的列的名称。
示例
让我们考虑前面创建的 CUSTOMERS 表,而不是创建一个新表。在这里,我们使用以下查询在NAME和AGE列上创建索引:
CREATE INDEX mult_index_data on CUSTOMERS(NAME, AGE);
输出
执行上述查询后,将获得如下输出:
Query OK, 0 rows affected (0.04 sec) Records: 0 Duplicates: 0 Warnings: 0
验证
现在,让我们使用以下 SHOW INDEX 查询列出在 CUSTOMERS 表上创建的所有索引:
SHOW INDEX FROM CUSTOMERS;
正如您所看到的,您可以在索引列表中找到列名 NAME 和 AGE 以及 ID(主键)。
表 | 非唯一 | 键名 | 索引中的序列 | 列名 |
---|---|---|---|---|
客户 | 0 | 主键 | 1 | ID |
客户 | 1 | index_name | 1 | NAME |
客户 | 1 | mult_index_data | 1 | NAME |
客户 | 1 | mult_index_data | 2 | AGE |
广告