118-Linux_数据库_索引

news2024/11/24 16:51:07

文章目录

  • 一.索引是什么?
  • 二.索引为什么选择b+树
  • 三.测试索引
    • 1.在mysql中创建数据库 test_indexdb
    • 2.在test_indexdb中创建表 test_index
    • 3.运行程序向表中插入1万条数据,都是字符串
    • 4. 查询验证

一.索引是什么?

索引是一种特殊的文件,它包含着对数据表里所有记录的引用指针。简单讲,就像一本书前面的目录,能加快查询速度。

  • 索引是帮助mysql高效获取数据的数据结构
  • 索引存储在文件系统中
  • 索引的文件存储形式与存储引擎有关
  • 索引文件的结构

二.索引为什么选择b+树

B-Tree 通常意味着所有的值都是按顺序存储的,并且每一个叶子页到根的距离相同。下图展示了 B-Tree 索引的抽象表示,大致反映了InnoDB 索引是如何工作的。MyISAM使用的结构有所不同,但基本思想是类似的。
在这里插入图片描述

B-Tree索引能够加快访问数据的速度,因为存储引擎不再需要进行全表扫描来获取需要的数据,取而代之的是从索引的根节点 (图示并未画出) 开始进行搜索。根节点的槽中存放了指向子节点的指针,存储引擎根据这些指针向下层查找。通过比较节点页的值和要查找的值可以找到合适的指针进入下层子节点,这些指针实际上定义了子节点页中值的上限和下限。最终存储引擎要么是找到对应的值,要么该记录不存在。

三.测试索引

1.在mysql中创建数据库 test_indexdb

在这里插入图片描述

2.在test_indexdb中创建表 test_index

在这里插入图片描述

3.运行程序向表中插入1万条数据,都是字符串

代码如下

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <mysql/mysql.h>
int main()
{
MYSQL mysql_conn;
MYSQL * mysql = mysql_init(&mysql_conn);
if ( mysql == NULL )
{
printf("init err\n");
exit(1);
}
mysql =
mysql_real_connect(mysql,"localhost","root","Abc_111111","test_indexdb",3306,NUL
L,0);
if ( mysql == NULL )
{
printf("connect err\n");
exit(1);
}
char sql_buff[128] = {0};
for( int i = 0;i < 10000; i++ )
{
sprintf(sql_buff,"insert into test_index values('test-%d')",i);
if ( mysql_query(mysql,sql_buff) != 0 )
{
printf("insert into err\n");
break;
}
}
mysql_close(mysql);
}

在这里插入图片描述

4. 查询验证

开启运行时间监测

set profiling=1;

查找一条数据 : test-9999

select * from test_index where title='test-9999';

查看执行的时间:

show profiles;

为表test_index的title列创建索引:

create index title_index on test_index(title(20));

执行查询语句后,再次查看执行时间
在这里插入图片描述
删除索引

drop index t_index on test_index;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

浅谈osgEarth操控器类的createLocalCoordFrame函数如何将局部坐标系的点转为世界坐标系下的Martix(ENU坐标)

在osgEarth操控器类的EarthManipulator中的如下函数&#xff1a; void EarthManipulator::setLookAt(const osg::Vec3d& center,double azim,double pitch,double range,const osg::Vec3d& posOffset) {setCenter( center );.... //…

二、PEMFC基础之电化学与反应动力学

二、PEMFC基础之电化学与反应动力学 1.电流、电流密度2.反应速率常数3.交换电流密度4.电化学动力学奠基石B-V方程5.活化损失计算Tafel公式6.计算案例 1.电流、电流密度 由法拉第定律 i d Q d t n F d N d t i\frac{dQ}{dt}\frac{nFdN}{dt} idtdQ​dtnFdN​ j i A j\frac{…

查询缓存实现、缓存更新策略选择、解决缓存穿透缓存雪崩缓存击穿问题

文章目录 1 什么是缓存?1.1 为什么要使用缓存1.2 如何使用缓存 2 给商户信息查询业务添加缓存2.1 缓存模型和思路2.2 代码如下 3 缓存更新策略3.1 数据库缓存不一致解决方案&#xff1a;3.2 数据库和缓存不一致采用什么方案3.3 删除缓存还是更新缓存&#xff1f;3.4 如何保证缓…

MySQL --- DQL

使用DDL语句来操作数据库以及表结构&#xff08;数据库设计&#xff09;使用DML语句来完成数据库中数据的增、删、改操作&#xff08;数据库操作&#xff09; 学习数据库操作方面的内容&#xff1a;查询&#xff08;DQL语句&#xff09;。 查询操作我们分为两部分学习&#…

chatgpt如何接入本地知识库?我们来看看EMNLP 2022 INFO是如何融入本地知识的

一、概述 title&#xff1a;You Truly Understand What I Need : Intellectual and Friendly Dialogue Agents grounding Knowledge and Persona 论文地址&#xff1a;You Truly Understand What I Need : Intellectual and Friendly Dialog Agents grounding Persona and Know…

基于S/Key协议的身份认证系统设计与实现【python】

实验内容 1 、 身份认证系统设计 设计身份认证系统的功能、主要界面、主要软件模块&#xff0c;以及采用的认证技术路线和方法。 2 、 编程实现所设计的身份认证系统 在C、Python或Java程序设计环境下&#xff0c;编程实现基于S/Key协议的身份认证系统。要求实现的身份认证…

计算机中丢失msvcp140.dll无法启动此程序怎么办?msvcp140.dll在哪里

电脑系统中的 msvcp140.dll 文件是 Microsoft Visual C Redistributable 组件的一部分&#xff0c;它们提供了许多在 Windows 操作系统中运行的应用程序所需的重要函数和库。如果丢失了 msvcp140.dll 文件&#xff0c;你可能会遇到多种错误&#xff0c;比如无法运行应用程序、系…

【RabbitMQ】安装及六种模式

文章目录 安装rabbitmq镜像访问容器内部15672端口映射到外面的端口地址RabbitMQ六种模式Hello world模式Work queues模式Publish/Subscribe模式交换机fanout类型 Routing模式Topics模式RPC模式 rabbitmq&#xff1a;0->1的学习 学习文档&#xff1a;https://www.cnblogs.com…

Java集合之双列集合

双列集合特点 双列集合一次需要添加一对数据&#xff0c;分别是键和值键不能重复&#xff0c;值可以重复键和值是一一对应的&#xff0c;每一个键只能找到自己对应的值键 值这个整体称为“键值对”或者“键值对对象”&#xff0c;Java中叫“Entry对象” 双列集合的体系结构 Ma…

linux系统systemd初始化进程

前言&#xff1a;目前绝大多数服务器系统以及从RHEL6换成RHEL7了&#xff0c;以前习惯使用service来管理系统服务的&#xff0c;那么现在就比较郁闷了&#xff0c;RHEL7系统中使用systemctl命令来管理服务。 systemctl启动、重启、停止、查看状态命令&#xff1a; systemctl …

算法竞赛字符串篇之C++中string的成员函数

2023年5月7日&#xff0c;周日中午&#xff1a; 今天决定从字符串这个知识点开始学起&#xff0c;记录一下我今天的字符串学习。 不定期更新。 相关的英文文档&#xff1a; https://cplusplus.com/reference/string/string/ 容量方面的成员函数&#xff1a; empty&#xff…

基于AT89C51单片机的电子闹钟设计与仿真

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87761718?spm=1001.2014.3001.5503 源码获取 主要内容: 基于51单片机设计一个电子闹钟,至少具有以下功能:时间的设定、时间的调整、闹钟的设定、温度的设定。 基本要求:…

排队论_M/M/1/inf/inf 问题

例:某修理店只有一一个修理工人&#xff0c;来修理的顾客到达数服从泊松分布&#xff0c;平均每小时4人;修理时间服从负指数分布&#xff0c;平均需6分钟。求: (1)修理店空闲的概率; (2)店内有3个顾客的概率; (3)店内至少有1个顾客的概率; (4)店内顾客的平均数; (5)顾客在店内的…

显著性检测:从传统方法到深度学习网络的演进与挑战

显著性检测技术在计算机视觉领域中扮演着至关重要的角色&#xff0c;它是一项对图像中最显著或最有区别的视觉特征进行分析和提取的技术。显著性检测技术可以为计算机视觉任务提供帮助&#xff0c;例如图像分割、目标检测、场景理解、图像检索和人机交互等方面。 本文将从传统方…

【MySQL】基于规则的优化(内含子查询优化;派生表;物化表;半连接;标量子查询;行子查询)

概念 常量表&#xff1a;下述两种查询方式查询的表&#xff1a; 类型1&#xff1a;查询的表中一条记录都没有&#xff0c;或者只有一条记录。 类型2&#xff1a;使用主键等值匹配或者唯一二级索引列等值匹配作为搜索条件来查询某个表 派生表&#xff1a;放在FROM子句后面的子…

UDP报头、TCP报头、IP报头、MAC头部、ARP头部

前言&#xff1a;DUP报头、TCP报头、IP报头、MAC头部、ARP头部。 UDP报头&#xff1a; UDP报头由八个字节组成&#xff0c;每个字段都是两个字节 &#xff1a; 1.源端口号&#xff1a;发送方端口号&#xff0c;需要对方回信的时候选用&#xff0c;不需要对方回信的时候置0 …

[LeetCode复盘] LCCUP‘23春季赛组队赛 20230507

[LeetCode复盘] LCCUP23春季赛组队赛 20230507 一、本周周赛总结1. 符文储备1. 题目描述2. 思路分析3. 代码实现 2. 城墙防线1. 题目描述2. 思路分析3. 代码实现 3. 提取咒文1. 题目描述2. 思路分析3. 代码实现 4. 生物进化录1. 题目描述2. 思路分析3. 代码实现 5. 与非的谜题…

HNU-操作系统OS-实验Lab3

OS_Lab3_Experimental report 湖南大学信息科学与工程学院 计科 210X wolf &#xff08;学号 202108010XXX&#xff09; 实验目的 了解虚拟内存的Page Fault异常处理实现了解页替换算法在操作系统中的实现 实验内容 本次实验是在lab2的基础上&#xff0c;借助于页表机制…

【python数据分析】运算符与表达式

&#x1f64b;‍ 哈喽大家好&#xff0c;本次是python数据分析、挖掘与可视化专栏第三期 ⭐本期内容&#xff1a;运算符与表达式 &#x1f3c6;系列专栏&#xff1a;Python数据分析、挖掘与可视化 &#x1f44d;保持开心&#xff0c;拒绝拖延&#xff0c;你想要的都会有&#x…