4.2 索引及其操作

        对数据库中的表进行查询操作时有两种搜索扫描方式,一种是全表扫描,另一种就是使用表上建立的索引进行扫描。

        全表扫描要查找某个特定的行,必须从头开始一一查看表中的每一行,与查询条件做对比,返回满足条件的记录,当表中有很多行时,查询效率非常低;
索引是按数据表中一列或多个列进行索引排序,并为其建立指向数据表记录所在位置的指针。   

        使用索引可以提高系统的性能,加快数据检索的速度。但是使用索引要付出一定的代价。增加存储空间,降低更新表中数据的速度。

索引的分类:

1)普通索引
       最基本的索引类型,没有唯一性之类的限制。创建普通索引的关键字是INDEX。
2)唯一性索引
       和普通索引基本相同,但唯一性索引的索引列的所有值都只能出现一次,即必须是唯一的。创建唯一性索引的关键字是UNIQUE。
3)主键
       是一种唯一性索引,必须指定为primary key。一般在创建表时指定,也可以通过修改表的方式加入主键。每个表只能有一个主键。
4)聚簇索引
       聚簇索引的索引顺序就是数据存储的物理顺序,保证索引值相近的元组所存储的物理位置也相近。一个表只能有一个聚簇索引。
5)全文索引
        MySQL支持全文检索和全文索引。在MysQL中,全文索引的索引类型为fulltext。

索引可以建立在一列上,称为单列索引,一个表可以建立多个单列索引。索引也可以建立在多个列上,称为组合索引、复合索引或多列索引。

4.2.1 创建索引

三种方法:

在已有的表上创建索引可用create index语句和alter table语句;
在创建表的同时创建索引可用create table语句。

1. 使用create index语句创建索引

语法格式:create [ unique ] INDEX index_name
                        on table_name ( col_name [ ( length ) ] [ asc | desc ],... )

其中,length为可选项,用于指定使用列的前length个字符创建索引。

【例4.12】在数据库study中学生表的姓名列上创建一个普通索引 Ⅰ_studentSname。

create index I_studentSname on 学生(姓名);

【4.13】在数据库study中课程表的课程号列上创建一个普通索引Ⅰ_courseCno,要求按课程号字段值降序排列。

create index I_courseCno on 课程(课程号 desc);

【4.14】在数据库study中选课表的成绩列(降序)和学号列(升序)创建一个组合索引Ⅰ_courseGradeSno。

create index I_courseGradeSno on 选课(成绩 desc,学号);

排序时先按成绩列降序排序。若成绩列值相同,再按学号列升序排序。 

2.使用alter table语句创建索引

语法格式:
alter TABLE tab_name
add [ unique | fulltext ] [ index | key ] [ index_name ] (col_name [ ( length ) ] [ asc | desc ],...)  

【例4.15】在数据库study中教师表的tname列创建一个唯一索引Ⅰ_teacherTname。

alter table 教师add unique index I_teacherTname(tname desc);

这里的“tname desc”是指按照汉语拼音对应的英文字母顺序排列;相应的,如果是英文,按照英文字母顺序进行排列。

3. 使用create table语句创建索引

可在创建表的同时创建索引。

语法格式:create TABLE tab_name [ col_name data_type ]
                        [ constraint index_name ] [ unique | fulltext ]
                        [ index | key ] [ index_name ] (col_name [ ( length ) ] [ asc | desc ],...)  

【例4.16】在数据库study中创建新表选课1表,主键为学号和课程号,同时在成绩列上创建普通索引。

create table 选课1 (学号 char(6) not null,课程号 char(4) not null,成绩 tinyint,primary key(学号,课程号),index(成绩));

 

4.2.2 查看表上建立的索引

语法格式:show { index | indexes | keys } { from | in } tb1_name [ { from | in } db_name ]

【例4.17】查看4.16所创建的选课1表的索引。

show index from 选课1;

从以上代码可以看出,在选课1表上建立了3个索引,2个主键索引,索引名称是primary。索引建立在学号和课程号列上,1个普通索引,索引名称是grade,索引建立在grade列上。

4.2.3 删除索引

1. 使用drop index语句。

语法格式:drop INDEX index_name on table_name

【例4.18】删除已建的索引Ⅰ_courseGradeSno。

drop index I_courseGradeSno on 选课;

该语句执行后,选课表上的索引被删除,对选课表无影响,也不影响该表上其他索引。

2. 使用alter table语句删除索引。

语法格式:alter  table tb1_name drop INDEX index_name

【例4.19】删除已建的索引Ⅰ_teacherTname。

alter table 教师drop index I_teacherTname;

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/341611.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JVM学习-Jprofiler

JProfiler 基本概述 特点 使用方便,界面操作友好对被分析的应用影响小(提供模板)CPU,Tread,Memory分析功能尤其强大支持对jdbc,noSql,jsp,servlet,socket进行分析支持多种模式(离线、在线)的分析支持监控本地、远程JVM跨平台,拥…

Vue01-vue的简介

一、Vue是什么? 一套用于构建用户界面的渐进式javaScript框架。 构建用户界面: 渐进式: 目前Vue的地位:生态完善,国内前端工程师必备技能。 二、Vue的特点 一个XXX.vue就是一个组件,封装的概念&#xff0c…

2025 QS 世界大学排名公布,北大清华跻身全球前20

一年一度,2025 QS 世界大学排名公布! QS(Quacquarelli Symonds)是唯一一个同时将就业能力与可持续发展纳入评价体系的排名。 继去年 2024 QS 排名因为“墨尔本超耶鲁,新南悉尼高清华”而荣登微博热搜之后&#xff0c…

小米路由器如何设置去广告功能,如何设置小米路由器的自定义Hosts(小米路由器如何去除小米广告、去除小米电视盒子开屏广告、视频广告)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 实现方案 📒📝 操作步骤📝 注意事项⚓️ 相关链接 ⚓️📖 介绍 📖 小米设备的广告一直是用户头疼的问题,无论是开屏广告、应用内广告还是系统广告,都影响了用户体验。本文将详细介绍如何通过小米路由器实现去除广告…

测试基础09:缺陷(bug)生命周期、定位方式和管理规范

课程大纲 1、缺陷(bug)生命周期 2、缺陷(bug)提交规范 2.1 宗旨 简洁、清晰、可视化,减少沟通成本。 2.2 bug格式和内容 ① 标题:一级功能-二级功能-三级功能_(一句话描述bug:&…

Angular17(2):angular项目中使用NG-ZORRO

1、使用Angular CLI创建空项目 ng new angular-admin-web --stylescss 2、执行ng add ng-zorro-antd命令安装 (1)ng add ng-zorro-antd 在angular项目下运行命令 ng add ng-zorro-antd 跟随选项便可完成初始化配置,包括引入国际化文件&…

alist配合onlyoffice 实现在线预览

alist配合onlyoffice 实现在线预览 文章目录 alist配合onlyoffice 实现在线预览一、安装onlyoffice二、增加view.html文件三、安装nginx,并增加conf配置文件四、alist预览配置增加 一、安装onlyoffice 我是采用docker安装,采用的版本是7.2, …

Web网站攻击技术

文章目录 Web应用体系结构脆弱性分析HTTP协议安全问题Cookie的安全问题 常见Web应用攻击及防范SQL注入攻击及防范SQL注入原理 防御注入漏洞跨站脚本(XSS)攻击及防范跨站脚本(XSS)攻击原理 跨站脚本攻击类型储存式XSS反射式XSSDOM式XSS Cookie欺骗及防范CSRF攻击及防范防御CSRF攻…

每天五分钟深度学习PyTorch:Tensor张量的索引和切片

本文重点 有时候当我们拥有一个Tensor张量的时候,我们可能需要获取它某一维度的信息,那么此时我们就需要索引和切片的技术,它们可以帮助我们解决这些问题。 切片操作 a是四维的,然后默认是从第一维开始取,逗号表示取不同的维度 a[:2]表示第一维取0,1,后面三维取所有 …

【QT5】<总览三> QT常用控件

文章目录 前言 一、QWidget---界面 二、QPushButton---按钮 三、QRadioButton---单选按钮 四、QCheckBox---多选、三选按钮 五、margin&padding---边距控制 六、QHBoxLayout---水平布局 七、QVBoxLayout---垂直布局 八、QGridLayout---网格布局 九、QSplitter---…

【保姆级讲解Outlook邮箱的使用技巧】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

Mysql:通过一张表里的父子级,递归查询并且分组分级

表:gc_jzst_single_base 需求:要求返回这张表里符合条件的数据,且有父子级关系的,展示为同一组且分级,给后续业务调用 代码 WITH RECURSIVE t1 AS (SELECTsingle_id,old_build_single_id,single_name,bulid_code,1 A…

【iOS】UI学习(二)

目录 前言UIViewContorllerUIViewContorller基础UIViewContorller使用 定时器和视图移动UISwitch控件UIProgressView和UISlider总结 前言 本篇博客是笔者在学习UI部分内容时的成果和遇到的一些问题,既是我自己的学习笔记,也希望对你有帮助~ …

jmeter常用的断言

包括(Contains):响应内容包括需要匹配的内容即代表响应成功,支持正则表达式 匹配(Matches):响应内容要完全匹配需要匹配的内容即代表响应成功,大小写不敏感,支持正则表达…

数据治理挑刺行动:深化治理,提升数据质量

在当今信息化社会,数据已经成为推动经济发展、社会进步的重要驱动力。然而,随着数据量的爆炸式增长,数据质量问题也日益凸显,给各行各业带来了不小的挑战。为了应对这一挑战,深化数据治理,提升数据质量已成…

python办公自动化——(二)替换PPT文档中图形数据-柱图

效果: 数据替换前 : 替换数据后: 实现代码 import collections.abc from pptx import Presentation from pptx.util import Cm,Pt import pyodbc import pandas as pd from pptx.chart.data impo…

游戏缺失xinput1_3.dll怎么修复,总结几种有效的修复方法

在现代科技日新月异的时代,电脑已经成为我们生活和工作中不可或缺的工具。然而,由于各种原因,电脑可能会出现一些错误或问题,其中之一就是找不到xinput13.dll文件,这个问题会导致软件或者游戏无法正常启动运行&#xf…

安徽某高校数据挖掘作业6

1 根据附件中year文件,编辑Python程序绘制年销售总额分布条形图和年净利润分布条形图,附Python程序和图像。 2 根据附件中quarter和quarter_b文件,编辑Python程序绘制2018—2020年销售额和净利润折线图,附Python程序和图像。 3 …

深度学习 --- stanford cs231 编程作业(assignment1,Q2: SVM分类器)

stanford cs231 编程作业之SVM分类器 写在最前面: 深度学习,或者是广义上的任何学习,都是“行千里路”胜过“读万卷书”的学识。这两天光是学了斯坦福cs231n的一些基础理论,越往后学越觉得没什么。但听的云里雾里的地方也越来越多…

编译原理总结

编译器构成 1. 前端分析部分 1.1 词法分析 确定词性,输出为token序列 1.2 语法分析 识别短语 1.3 语义分析 分析短语在句子中的成分 IR中间代码生成 2. 机器无关代码优化 3. 后端综合部分 目标代码生成 机器相关代码优化 4. 其他 全局信息表 异常输出