SQL学习之create index语句

本文深入解析SQL中的索引概念,包括索引的类型如主键、唯一和普通索引,以及聚集和非聚集索引的区别。同时,文章探讨了创建索引的目的、优缺点,并通过实例展示了如何使用SQL语句创建不同类型的索引。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考源

SQL create index 语句

SQL create index 语句用于在表中创建索引

为什么使用索引:

在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据

索引有什么副作用:

索引会减慢数据插入和更新的速度

索引

创建索引的目的,也是唯一目的,就是加快数据的查询速度
用户无法看到索引,它们只能被用来加速搜索/查询
虽然索引有很多好处,但也是坏处多多
更新一个包含索引的表需要比更新一个没有索引的表花费更多的时间,这是由于索引本身也需要更新
因此,理想的做法是仅仅在常常被搜索的列 ( 以及表 ) 上面创建索引
——简单教程https://www.twle.cn/l/yufei/sql/sql-basic-create-index.html

索引分类

索引一般分为几大类: 主键索引唯一索引普通索引

  1. 普通索引允许重复的值,就是两个记录的索引字段的值可以重复
  2. 唯一索引不允许重复的值,两个记录的索引字段不允许重复,其实 主键索引 也是一种特殊的唯一索引

组合索引? 组合索引不属于它们,如果三个索引中包含了两个及以上字段,其实就是组合索引,不如组合主键索引

索引一般分为两大类:聚集索引非聚集索引

聚集索引 就是表记录的排列顺序和索引的排列顺序一模一样

聚集索引,不会有单独的空间存储索引数据,而是在存储数据的时候就已经根据索引排好序

主键索引就属于 聚合索引

非聚集索引 用另外的空间存储了记录的顺序,但是记录本身的物理顺序可以和索引不一样

唯一索引 和 普通索引 都是非聚集索引

SQL 创建索引

  1. 创建普通索引
    普通索引允许重复值

    CREATE INDEX index_name ON table_name (column_name)
    
  2. 创建唯一索引
    唯一索引不允许重复值,可以使用下面的 SQL 语句创建唯一索引

    CREATE UNIQUE INDEX index_name ON table_name (column_name)
    

示例数据

CREATE DATABASE IF NOT EXISTS hardy_db default character set utf8mb4 collate utf8mb4_0900_ai_ci;

USE hardy_db;

DROP TABLE IF EXISTS lesson_views;

CREATE TABLE lesson_views (
    uniq bigint(20) primary key NOT NULL default '0' ,
    lesson_name varchar(32) default '',
    lesson_id int(11) default '0',
    date_at  int(11) NOT NULL default '0',
    views int(11) NOT NULL default '0'
);

INSERT INTO lesson_views(uniq,lesson_name,lesson_id,date_at,views) VALUES
(20170511000001,'Python 基础教程',1,20170511,320),
(20170511000002,'Scala 基础教程', 2,20170511,22),
(20170511000003,'Ruby 基础教程', 3, 20170511,49),
(20170512000001,'Python 基础教程',1,20170512,220),
(20170512000002,'Scala 基础教程',2,20170512,12),
(20170512000003,'Ruby 基础教程',3,20170512,63),
(20170513000001,'Python 基础教程',1,20170513,441),
(20170513000002,'Scala 基础教程',2,20170513,39),
(20170513000003,'Ruby 基础教程',3,20170513,87);
CREATE INDEX ix_lesson_views_date_at ON lesson_views (date_at);
CREATE INDEX ix_lesson_views_date_at ON lesson_views (date_at, lesson_id);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值