关于数据库索引

《数据库原理》实验报告DB4——视图与索引 一. 实验内容、步骤以及结果 1. 在Student数据库中,用SQL语句创建一个选修了数据库课程并且是2001年出生的学生的视图,视图中包括学号,姓名,性别,成绩。(5分) create view student_2001(sno,sname,sgender,grade) as select s.sno,sname,sgender,grade from s,sc,c where s.sno = sc.sno and sc.cno = c.cno and cname = '数据库' and birth li 阅读详情

数据库索引:

1,索引是什么?

    数据库索引是一种数据结构,为了在进行数据检索的时候提高检索的效率,Mysql数据库通常使用的数据库索引是B+tree.

Mysql存储引擎:Innodb,MyISAM.

索引在存储上分为两种:聚簇索引和非聚簇索引,区别是存储数据的树的叶子节点是否存储数据

Inoodb:使用的是聚簇索引,叶子节点存储相应的数据。

MyISAM:使用非聚簇索引,叶子节点存储对应数据的指针。

2,普通索引怎么建立?

create index  index_name on tablename (columnname);

alter table tablename add index index_name(columnname);

以下所使用的表结构

3,索引的分类

唯一索引:该索引所依赖的列在数据库中,不存在任意两行数据出现重复,即student_name 上边建立唯一索引,则student_name不可出现同名行,但允许有空值。

create unique index  index_name on tablename (columnname);

 

因为在name上边建立了唯一索引,所以在添加数据的时候存在约束,相同则报错。

单列索引:只为在检索的时候提高效率,并无其他约束。

对于普通索引在添加name时,并没有唯一性约束。

主键索引:在表建立的时候,innodb会自动依据主键建立主键索引,唯一索引在字面上的意思与主键索引十分相近,但是需要注意,主键索引一定是唯一索引,但是唯一索引不一定是主键索引。

覆盖索引:覆盖索引即是在在查询的时候只查询建立索引的列,

create index index_name on  student(name);

select  name from student where  name = '';

组合索引:组合索引是在多个列上建立的索引

create index index_nameAgeClass on student(name,age,class);

3,索引怎么维护?

   数据集库索引需要维护,因为在某些情况下,数据库索引会失效。

    维护索引口诀:

    全值匹配我最爱:使用组合索引的时候,建立索引时涉及几个列,则在检索的时候最好都使用上。

    最左前缀要遵守:组合索引在使用时,where后边的条件是与建立索引时的顺序保持一致。

    带头大哥不能死,在检索的时候,只能在索引按顺序来,如果前边有列未给值则不能走索引 ,带头索引不存在  索引失效 

   中间兄弟不能断;   中间涉及列不存在的时候,后边的不能正确走索引 后边索引失效

   索引列上少计算,   在检索列上不要进行计算,否则会导致全表扫描,索引失效 

   范围之后全失效;  组合索引在某一列上涉及范围后,不能正确走索引,使用范围的那个索引以后索引失效 (>,<,like)

   LIKE百分写最右,模糊匹配的时候,使用百分号在右的匹配,百分号在前,不会再走索引  (like '20%')索引失效 

   覆盖索引不写星;覆盖索引即是查询建立索引的字段,可以一次找到查询结果,不需要在进行一次映射

   不等空值还有or, 涉及不等号比较和or则 索引失效

   索引失效要少用;

   VAR引号不可丢,在字符串类型的字段做 条件的时候,引号不能缺失,索引失效 

   SQL高级也不难;

 

4,索引的优点

  使用数据库索引提高了检索的速度,降低数据排序成本,可以比避免插入操作集中于表的最后一个数据页

5,索引的缺点

  索引占据空间,表越大,索引占用的空间越大

  性能损失(值更新时),在表进行增删改的时候,索引同样需要花费时间去维护

 

 

 

 

Cosmos DB 索引优化实战技巧 Azure Cosmos DB索引优化策略(150字摘要) 本文针对Azure Cosmos DB提出核心优化方案:1)索引策略配置,通过包含/排除路径精准控制索引范围;2)复合索引优化多条件查询与排序;3)矢量索引分片提升向量搜索性能;4)数组字段采用属性提取或多键索引避免全扫描;5)动态吞吐量调整与分区键设计避免热分区。建议结合业务场景精简索引,定期监控RU消耗,删除冗余路径,并利用EXPLAIN分析查询计划。电商案例显示复合索引可提升订单查询效率30%+,矢量索引优化使推荐系统响应速度提升50%。 阅读详情

相关推荐

数据库领域数据仓库的索引优化策略

数据仓库作为企业级数据管理的核心组件,承载着大量的历史数据和业务信息,用于支持企业的决策分析和数据挖掘等重要业务。随着数据量的不断增长和查询需求的日益复杂,数据仓库的查询性能面临着巨大的挑战。索引优化作为提升数据仓库查询性能的关键技术手段,其目的在于通过合理设计和管理索引,减少数据扫描范围,提高数据访问速度,从而显著提升数据仓库的查询响应时间和整体性能。本文的范围涵盖了数据仓库索引优化的各个方面,包括核心概念、算法原理、操作步骤、数学模型、实际应用案例以及相关的工具和资源推荐等。

2502_91592937的博客 1021

数据库中的索引

索引是数据库表中的字段的索引,所谓的索引就是在表的字段上添加的,每个字段都可以添加索引来提高查找效率,也可以多个字段联合添加一个索引。

weixin_52938172的博客 3万+

用python提取PDF中各类文本内容的方法

用python提取PDF中各类文本内容的方法

安静的软件工程师 6086

数据库索引详细介绍

方法重载和重写的区别 方法重载:同一个类中,方法名相同,参数(类型或数量)不同,方法体不同; 方法重写:不同的类中,方法名相同,参数(类型和数量)相同,方法体不同; 构造方法可重载但不可重写 平衡二叉树: 它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。 ......

lucky多多的博客 1万+

android HTTPS未校验服务器证书漏洞修复

上述代码是重写了域名校验的逻辑,每个证书里携带的域名是不可更改的,如果证书是合法的证书签发机构签发的,并且域名是和你要请求的域名对的上的,基本上就能确认你访问就服务器地址就是要访问的服务器地址,这样才是安全的。上述代码就是重新了证书校验的逻辑,信任所有的证书,正确的逻辑是要校验证书是否是可信任的证书签发机构所认证的,如果不校验的话你虽然是用了https加密传输,只要你的客户端用户信任了其他的证书哪怕是非法的证书,一样能够请求通过,而这个证书的服务器就可以解密你的报文,拿到你的隐私信息了。

kyzycyey的专栏 2622

单细胞实战之数据净化三部曲:细胞周期校正、双胞体剔除与RNA污染清理——技术解析与实战指南

本文深入解析单细胞数据分析中至关重要的数据净化步骤,即细胞周期校正、双胞体剔除与RNA污染清理。通过实战代码演示与原理剖析,指导读者如何有效识别并去除技术噪音,从而获得更纯净、可靠的数据,为后续的细胞分群、差异表达等高级分析奠定坚实基础。

weixin_29274337的博客 204

数据库索引(详细解析)

索引是一种用于快速查询和检索数据的数据结构。常见的索引结构有: B 树, B+树和 Hash。 索引的作用就相当于目录的作用。打个比方: 我们在查字典的时候,如果没有目录,那我们就只能一页一页的去找我们需要查的那个字,速度很慢。如果有目录了,我们只需要先去目录里查找字的位置,然后直接翻到那一页就行了。

qq_54247497的博客 1万+

LSTM模型 轨迹经纬度预测

原始时间序列数据如下所示,我们只取前两列纬度和经度作为输入数据 我们设定用前六个位置信息预测下一个位置,则两个样本的输入输出数据如下所示: 创建LSTM网络训练模型: import numpy as np from keras.layers.core import Dense, Activation, Dropout from keras.layers import LS...

Muzi_Water的博客 2万+

一文搞懂MySQL索引数据结构

前言 当我们在查询数据慢的情况下第一个想到的会是添加索引,索引在数据库的实际应用场景中十分常见,数据库的优化也离不开对索引的优化。而且索引相关的知识也是面试频率非常高的点之一,因此,本文将从基础理论出发,介绍MySQL按照逻辑角度的索引分类和实现。通过索引数据结构的实现原理阐述不同结构对建立索引带来的优劣势,希望通过这篇文章能给大家带来收获。 SQL执行慢的原因分析 磁盘空间不足、内存不足、I/O吞吐量小或者网络差等原因。 表没有创建索引或者索引已经失效。 分库分表也会带来SQL慢的原因 服务器调优及各.

养歌的博客 5900

Flowable第一篇、快速上手(Flowable安装、配置、集成)

Flowable是一个轻量级、高效可扩展的工作流和业务流程管理(BPM)引擎,支持在Java应用程序中实现复杂的工作流自动化。Flowable最初是作为Activiti项目的一个分支发展而来的,但它现在已经成为一个独立的开源项目,并在企业级应用中得到了广泛使用

Du_XiaoNan的博客 1万+

零基础教你学RDMA驱动开发--第8篇:队列对(QP)、完成队列(CQ)与工作请求(WR)机制剖析

本文深入剖析了RDMA(远程直接内存访问)中的核心机制:队列对(QP)、完成队列(CQ)和工作请求(WR)。QP作为通信端点包含发送队列(SQ)和接收队列(RQ);WR是用户提交的操作指令,转换为工作队列元素(WQE)后由网卡异步执行;CQ则提供完成通知机制。文章详细介绍了三者的协作原理,包括QP状态机、WR提交方式、CQ轮询机制,以及关键的信号控制技术(Signaled Mode)来优化性能。同时对比了SEND/RECV和RDMA WRITE两种模式的差异,提供了调试技巧和最佳实践。这些机制共同构成了RD

amy_mhd的博客 156

Mysql索引的应用

MySQL索引的应用

DTY9999的博客 8198

高通IPA硬件加速介绍

‌ 高通IPA (Internet Protocol Accelerator)模块是一种硬件加速模块,由高通公司(Qualcomm)提供,主要用于优化移动设备上的网络数据传输,特别是通过 LTE 、 5G 等移动网络的数据传输‌‌。IPA模块通过硬件加速,显著提高了数据传输的速度和效率,同时降低了设备的功耗,并提供了更稳定的网络连接,减少了数据传输中的丢包和延迟‌。

四儿家的小祖宗的博客 1622

berkeley db 中secondaryDatabase的用法 and 构建索引

简单介绍下bdb中索引的构建。        为什么要构建索引?        由于bdb是key/value型数据库,我们通常是通过key值来检索数据。可是,实际运用中,我们更希望能够通过value中的某些值来得到这样一整条记录。显然仅仅靠key来检索是不可行的。原文摘抄如下:Usually you find database records by means of the record's

Simple life 3334

2025年9月GESP(C++四级):排兵布阵

作为将军,你自然需要合理地排兵布阵。地图可以视为n行m列的网格,适合排兵的网格以 1 标注,不适合排兵的网格以 0 标注。现在你需要在地图上选择一个矩形区域排兵,这个矩形区域内不能包含不适合排兵的网格。请问可选择的矩形区域最多能包含多少网格?

王老师青少年编程 1380

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

数据仓库在数据库领域的索引设计原则

数据仓库作为企业级数据分析的核心基础设施,其索引设计直接决定了复杂查询的性能边界。本文以数据仓库的OLAP工作负载特征为起点,通过第一性原理推导索引设计的本质目标(降低数据访问成本),系统解析传统索引结构(B-tree、位图索引)与新型列存索引(如块索引、投影索引)的适用场景,结合星型/雪花模型的典型架构,提出"维度-事实表差异化索引策略""高基数-低基数列索引选型矩阵"等实践框架,并覆盖索引维护、自动调优、未来演化等高级议题。

AI天才研究院 1144

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

怎们知道redis使用的数据库索引database是多少

如何确认Redis使用的数据库索引(database) 作为一名刚入行的开发者,了解如何与Redis进行交互以及如何察觉数据库的状态是至关重要的。本篇文章将带领你一步步了解如何确定Redis使用的数据库索引。我们将展示整个流程,提供所需的代码,并对每一步进行详细说明。 流程概述 下面是确认Redis数据库索引的整体步骤: ...

weixin_36874817的博客 514

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

大云海山数据库(He3DB) 内核分析 — Btree索引篇

本文重点分析了He3DB数据库中B-Tree索引的实现原理。首先介绍了B+Tree的基本结构特点,包括键值存储在叶子节点、叶子节点双向链接等。随后详细阐述了索引的创建过程,包括元组转换、排序、页面填充及B+Tree构建等关键步骤。在查询方面,解释了索引扫描的工作原理及与回表操作的配合机制。对于数据更新,分析了索引插入时的页面分裂处理流程,以及删除操作中标记删除与物理删除的区别。最后总结了B+Tree索引在等值和范围查询中的优势,并指出其内部节点与叶子节点的不同指向特点。

weixin_43544348的博客 1043

DB的索引

这里是修真院后端小课堂,每篇分享文从 【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】 八个方面深度解析后端知识/技能,本篇分享的是: 【DB的索引 】 大家好,我是IT修真院北京分院的学员,一枚正直善良的JAVA程序员。 今天给大家分享一下,修真院官网任务中可能会使用到的知识点: 什么是DB的索引? 1.背景介绍: 索引是...

IT修真院:初学者转行到互联网的聚集地 615

数据库索引Database Indexing

总觉得很多人会用个SQL Index就很装逼<( ̄3 ̄)> 主要学习了《Database System Concepts 6th》chapter 11Problem Domain “Find all instructors in the Physics department” It is inefficient for the system to read every tuple in the

musaxic的博客 1206

数据库索引设计与优化:db-tutorial 数据结构深度解析

数据库索引是提升查询性能的关键技术,理解其底层数据结构对于设计高效的数据库系统至关重要。本文基于db-tutorial项目,深度解析数据库索引的数据结构原理,帮助您掌握索引设计与优化的核心技巧。 ## 什么是数据库索引?🤔 **数据库索引是数据库为了提高查找效率的一种数据结构**。索引基于原始数据衍生而来,它的主要作用是缩小检索的数据范围,提升查询性能。通俗来说,索引在数据库中的作用就像是一

gitblog_01068的博客 924

数据库索引全解(What is Database Index)

本文来自数据库索引的实现原理 数据库索引 唯一索引 主键索引 聚集索引 局部性原理与磁盘预读 B-Tree索引的性能分析 B树 B加树说白了,索引问题就是一个查找问题。。。数据库索引数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。 在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)

MapleStory的博客 1万+

数据仓库中如何使用索引

阅读原文摘要: 原文:数据仓库中如何使用索引 数据仓库的索引是个棘手的问题。如果索引太多,数据插入很快但是查询响应就会很慢。如果太多索引,数据导入就很慢并且数据存储空间更大,但是查询响应更快。数据库中索引的作用就是加快查询速度,不论是传统数据库还是数据仓库。原文:数据仓库中如何使用索引数据仓库的索引是个棘手的问题。如果索引太多,数据插入很快但是查询响应就会很慢。如果太多索引,数据导入就很慢并且数据...

weixin_40581980的博客 610

python berkeley DB操作——打开btree索引文件中的database

打开BDB中某个索引中的数据库代码: from bsddb3 import db import bsddb3 as bsddb print db.DB_VERSION_STRING mydb = db.DB() mydb.open('your_btree_db_filename', 'databsename', dbtype=db.DB_BTREE) rec =...

djph26741的博客 273

移动云大云海山数据库(He3DB)B树索引

B树索引是数据库使用场景中最常见的索引。移动云大云海山数据库的B树索引实际上是一种B+树。本文主要介绍数据库的B树索引页面、B树索引结构,以及B树索引创建和插入的过程。在src/backend/access/nbtree/nbtree.c的函数bthandler中,可以找到B树索引的所有入口函数。索引创建:btbuild索引插入:btinsert索引删除:btbulkdelete、btvacuumcleanup。

weixin_43544348的博客 690
上一篇: 关于数据库 Explain 的解释
下一篇: Java 内部类(成员内部类)
Embra_ce
博客等级 码龄9年 2粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值