1.2 什么是索引?

1.1 什么是索引?

SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间

下面举两个简单的例子:

图书馆的例子:一个图书馆那么多书,怎么管理呢?建立一个字母开头的目录,例如:a开头的书,在第一排,b开头的在第二排,这样在找什么书就好说了,这个就是一个聚集索引,可是很多人借书找某某作者的,不知道书名怎么办?图书管理员在写一个目录,某某作者的书分别在第几排,第几排,这就是一个非聚集索引

字典的例子:字典前面的目录,可以按照拼音和部首去查询,我们想查询一个字,只需要根据拼音或者部首去查询,就可以快速的定位到这个汉字了,这个就是索引的好处,拼音查询法就是聚集索引,部首查询就是一个非聚集索引.

看了上面的例子,下面的一句话大家就很容易理解了:聚集索引存储记录是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续。就像字段,聚集索引是连续的,a后面肯定是b,非聚集索引就不连续了,就像图书馆的某个作者的书,有可能在第1个货架上和第10个货架上。还有一个小知识点就是:聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个。
CREATE DATABASE IF NOT EXISTS info DEFAULT CHARSET utf8;
USE info;

#建员工表

CREATE TABLE IF NOT EXISTS emp(emp_id INT PRIMARY KEY AUTO_INCREMENT,
emp_name VARCHAR(20),
salary INT,
dept_id INT,
manager_id INT
);
DROP TABLE emp;

#直接指定索引

CREATE INDEX index_emp_name ON emp(emp_name);
SELECT * FROM emp WHERE emp_name="liu";

#修改表时添加索引

ALTER TABLE emp ADD INDEX index_salary (salary);

#创建表时添加索引

CREATE TABLE article(id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(20) COMMENT '标题',
comtent VARCHAR(100) COMMENT '内容',
dt DATE,
INDEX index_title (title)
);

#删除索引

DROP INDEX index_salary ON emp;
DROP INDEX index_emp_name ON emp;
DROP INDEX index_title ON article;

#创建唯一索引unique
#在 index前面加unique:保证索引列的值必须唯一,但允许有多个空值;

CREATE UNIQUE INDEX index_emp_name ON emp(emp_name);
SELECT * FROM emp WHERE emp_name="liu";
ALTER TABLE emp ADD UNIQUE INDEX index_salary (salary);
CREATE TABLE article(id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(20) COMMENT '标题',
comtent VARCHAR(100) COMMENT '内容',
dt DATE,
UNIQUE INDEX index_title (title)
);

#创建组合索引:1,2,3

CREATE INDEX index_title_content ON article(title,comtent);
SELECT * FROM article WHERE title='冬奥会' AND comtent='金牌数量';
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值