在 MySQL 中,索引是一种特殊的数据结构,用于快速查找数据库表中的数据。索引可以帮助提高查询速度,特别是对于大型数据表而言,使用索引可以大大减少查询的时间复杂度。
索引类
普通索引(Normal Index):
普通索引是最基本的索引类型,用于加速单一列的查找操作。例如,如果我们有一个用户表,其中包含用户名(username)列,我们可以为该列创建一个普通索引,以加快按用户名搜索的速度。示例代码如下:
-- 为用户表的 username 列创建一个普通索引
CREATE INDEX idx_username ON user_table(username);
唯一索引(Unique Index):
唯一索引要求索引列的值必须唯一,不允许重复。例如,在商品表中,我们可以为商品编号(product_id)列创建一个唯一索引,以确保每个商品的编号都是唯一的。示例代码如下:
-- 为商品表的 product_id 列创建一个唯一索引
ALTER TABLE product_table ADD UNIQUE INDEX idx_product_id (product_id);
主键索引(Primary Key Index):
主键索引是一种特殊的唯一索引,要求索引列的值不能为空且唯一,通常用于表的主键列。例如,在订单表中,我们可以为订单号(order_id)列创建一个主键索引,以确保每个订单都有唯一的订单号。示例代码如下:
-- 为订单表的 order_id 列创建一个主键索引
ALTER TABLE order_table ADD PRIMARY KEY (order_id);
组合索引(Composite Index):
组合索引是指同时包含多个列的索引,可以提高查询效率,特别是对于联合查询或包含多个条件的查询。例如,在文章表中,我们可以为标题(title)和作者(author)列创建一个组合索引,以加快按标题和作者查询的速度。示例代码如下:
-- 为文章表的 title 和 author 列创建一个组合索引
CREATE INDEX idx_title_author ON article_table(title, author);
全文索引(Full-Text Index):
全文索引主要用于全文搜索,可以对文本内容进行高效的搜索。例如,在新闻表中,我们可以为新闻内容(content)列创建一个全文索引,以支持用户对新闻内容的全文搜索。示例代码如下:
-- 为新闻表的 content 列创建一个全文索引
CREATE FULLTEXT INDEX idx_content ON news_table(content);
使用 ALTER 命令添加和删除主键
添加主键:
要向现有的表中添加主键,可以使用 ALTER TABLE 语句,并指定 ADD PRIMARY KEY 子句,后面跟着要作为主键的列名或列名组合。
-- 添加主键到现有表
ALTER TABLE table_name ADD PRIMARY KEY (column_name);
如果要将多个列组合成复合主键,则在 ADD PRIMARY KEY 子句后面列出多个列名。
-- 添加复合主键到现有表
ALTER TABLE table_name ADD PRIMARY KEY (column1, column2);
删除主键:
要从现有的表中删除主键,可以使用 ALTER TABLE 语句,并指定 DROP PRIMARY KEY 子句。
-- 删除现有表的主键
ALTER TABLE table_name DROP PRIMARY KEY;
显示索引信息
使用 SHOW INDEX FROM 语句。该语句将显示表的索引信息,包括索引名称、索引类型、索引字段等。
下面是一个示例:
SHOW INDEX FROM table_name;
table_name 是要显示索引信息的表的名称。执行此语句后,将显示表的所有索引信息,包括每个索引的名称、唯一性、字段名称、索引类型等。