关于索引的整理

一、索引是干嘛的

        索引就是用来在数据库中加速数据库查询速度的。就和在《新华字典》中的按拼音或者按笔画查字是一样的,通过缩小查询的范围,用最短的时间搜索到满足条件的记录。


二、常见的索引类型

1.普通索引(NORMAL)

普通索引是最常见的索引类型。

ALTER TABLE `table_name` ADD INDEX index_name ( `column` ) 

2.唯一索引(UNIQUE)

唯一索引就是索引列只能是唯一的不可以重复的。

ALTER TABLE `table_name` ADD UNIQUE (`column`)

3.主键索引(PRIMARY KEY)

主键索引就是在建主键的时候自动建的索引。

ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 

4.复合索引 

复合索引就是可以多个索引列组合在一起,但是索引的第一列必须要在sql里,不然就会没用。

ALTER TABLE `table_name` ADD INDEX index_name ( `column1` ,`column2` ) 

5.全文索引(FULL TEXT)

全文索引就是只能是CHAR,VACHAR,TEXT类型的才能添加的索引。

ALTER TABLE `table_name` ADD FULLTEXT index_name (`column`)

三、常见的索引方法

1.B-Tree

B-Tree是一种平衡的树状数据结构,所有值(被索引的列)都是排过序的,每个叶节点到跟节点距离相等。所以B-Tree适合用来查找某一范围内的数据,而且可以直接支持数据排序(ORDER BY)。

2.Hash索引

哈希(hash)比树(B-Tree)更快,原因就是Hash索引的工作方式其实就像我们生活中的电话本或者地址簿。想象一下,你有一本电话本,里面记录了每个人的联系方式。为了快速找到某个人的联系方式,电话本不是按照人名首字母或者姓氏笔画排序,而是用了一种特别的方法给每个人编了一个号码(这就是哈希值)。

现在,你想找某个朋友的联系方式,你只需要查看电话本前面的索引(哈希函数),找到这个朋友对应的号码(哈希值)。然后,你直接翻到电话本中对应号码的位置,就能迅速找到这个朋友的联系方式(数据)。

所以,Hash索引就是利用一个特殊的编号方法(哈希函数),给每条数据编一个独特的号码(哈希值)。这样,当你需要找某条数据时,只需要用这个号码(哈希值)就能在固定的位置(固定大小的数组)快速找到它,而不需要一页一页地翻找。这种方法非常快捷,但缺点是,如果两个人的号码(哈希值)相同,你就需要再仔细看一下,确保找到的是你要找的那个人(解决哈希冲突)。


四、单列索引和组合索引

1.单列索引

单列索引就是指索引只包含原表的一个列。在表中的单个字段上创建索引,并且这个索引只根据这一字段进行排序和查找。单列索引没有特别的限制条件,以是普通索引,也可以是唯一索引,还可以是全文索引。

2.组合索引

组合索引就是在数据库中创建一个包含多个列的索引,这些列共同组成了索引键。然后利用多个列的值来排序和查找数据。组合索引能够提高多列查询的性能,单列索引在多列查询就不是很适用了,而且组合索引支持对多个列进行过滤条件,从而提高数据检索速度。组合索引将多个字段值按一定顺序进行排列,并将其作为一个整体存储在B+树结构中,这样能有助于加快复杂查询的速度。

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

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

相关文章

MongoDB聚合运算符:$week

MongoDB聚合运算符:$week 文章目录 MongoDB聚合运算符:$week语法使用举例 $week聚合运算符返回指定日期日期为一年中第几周的数字值为0到53之间。周从周日开始,第1周从一年的第一个周日开始。一年中第一个星期日之前的日期为第0周。这和 str…

爬虫入门经典(七) | 采集淘宝电场相关信息

大家好,我是不温卜火,昵称来源于成语—不温不火,本意是希望自己性情温和。 PS:由于现在越来越多的人未经本人同意直接爬取博主本人文章,博主在此特别声明:未经本人允许,禁止转载!&a…

烟罩一体机清洗维护指南:引领绿色餐饮新时代

我最近分析了餐饮市场的油烟净化器等产品报告,解决了餐饮业厨房油腻的难题,更加方便了在餐饮业和商业场所有需求的小伙伴们。 在现代餐饮行业,保持厨房环境清洁和空气质量优良已成为餐厅经营的重要部分。烟罩一体机作为高效油烟净化设备&…

java和c++中i = i++编译报错

在C和C中,i i这样的语句是未定义行为(Undefined Behavior)。这意味着编译器可以根据其实现规范进行任何操作,包括让程序崩溃、产生错误结果或者产生未预期的行为。在这种情况下,i的值在执行i时会被递增,但…

2123 求二叉树的高和宽

描述 以二叉链表为存储结构,分别写出求二叉树高度及宽度的算法,所谓宽度是指二叉树的各层上,具有结点数最多的那一层上的结点总数。 输入 括号表示的二叉树,如: A(B,C) 输出 二叉树的高度和宽度,用空格分隔&#xf…

AI学习指南数学工具篇-PCA基础知识

AI学习指南数学工具篇-PCA基础知识 1. PCA是什么? PCA,即主成分分析(Principal Component Analysis),是一种常用的数据降维技术。它通过线性变换将原始数据投影到一个新的坐标系中,旨在找到数据中的“主成…

main.ts中import App from ‘./App.vue‘报错:找不到模块或者相应的类型证明

在src文件夹下创建一个shims-vue.d.ts并输入以下内容: declare module *.vue {import { ComponentOptions } from vueconst componentOptions: ComponentOptionsexport default componentOptions } 参考链接vue3 报错解决:找不到模块或其相应的类型声明…

Galxe已投资Pencils Protocol,投资者阵营正不断扩大

近日,Scroll 生态项目 Penpad 将品牌进一步升级为 Pencils Protocol,全新升级后其不仅对 LaunchPad 平台进行了功能上的升级,同时其也进一步引入了 Staking、Vault 以及 Shop 等玩法,这也让 Pencils Protocol 的叙事方向不再仅限于…

基础之音视频2

01 前言 02 mp 03 mp实例 简易音乐播放器 04 音频 sound-pool 1.作用 播放多个音频,短促音频 2.过程 加载load- 3.示例 模拟手机选铃声 步骤: 创建SoundPool对象,设置相关属性 音频流存入hashmap 播放音频 05 videoview 3gp 体积小 mp4 …

凸优化(Stephen Boyd) 2-4章答案(中文版)

https://www.123pan.com/s/erusjv-4xXed.html提取码:d4UD 由于是机翻,所以有些地方有错误。建议和原文对照阅读。原英文版答案网上很多。

让你情绪变好的七个小技巧

在快节奏的现代生活中,我们常常忙于奔波,忽略了生活中的小细节。然而,正是这些小小的行动,可以为我们的日常生活带来巨大的改变。以下是一些简单的生活步骤,它们能够帮助你提升生活质量,让你的生活焕发新的…

web安全学习笔记(15)

记一下第25-26课的内容。弱口令爆破的四种模式与判断成功失败的三种方案;爆破中的验证码拦截错误次数IP限制密码加密绕过 IP获取的原理以及绕过CDN获取客户真实IP 一、弱口令的分类 1.常规弱口令:如123456,666666,888888等 2.…

【软件测试】需求概念|软件的⽣命周期|开发模型|测试模型

目录 推荐 一、什么是需求 1.1 ⽤⼾需求 1.2 软件需求 二、开发模型 2.1 什么是“模型” 2.2 软件的⽣命周期 2.3 常⻅开发模型 2.3.1 瀑布模型 2.3.2 螺旋模型 2.3.3 增量模型、迭代模型 2.3.4 敏捷模型 2.4 测试模型 2.4.1 V模型 2.4.2 W模型(双V模型&#xff0…

Java_从入门到JavaEE_16

一、迭代器 1.Iterator 概念:Iterator是一个接口,它是集合的迭代器,集合可以通过Iterator去遍历集合中的元素,常用API接口: hasNext():如果迭代器中还有元素,则返回true。next():返回迭代器中的下一个元素…

使用RN的kitten框架的日历组件的修改

官方网页地址 下面就是我参考官方封装的时间日期组件(主要是功能和使用方法,页面粗略做了下,不好看勿怪) import React, {useState} from react; import {StyleSheet, View, TouchableOpacity, SafeAreaView} from react-native; …

FreeRTOS消息队列queue.c文件详解

消息队列的作用 消息队列主要用来传递消息,可以在任务与任务之间、中断与任务之间传递消息。 传递消息是通过复制的形式,发送方发送时需要不断复制,接收方接收时也需要不断复制。虽然会有内存资源的浪费,但是可以保证安全。 假…

Java项目:基于ssm框架实现的实验室耗材管理系统(B/S架构+源码+数据库+毕业论文+答辩PPT)

一、项目简介 本项目是一套基于ssm框架实现的实验室耗材管理系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 二、技术实现 jdk版本:1.8 …

2024年最新最全面的软件测试面试题(四)

1、在项目中如何保证软件质量? 项目质量不仅仅是某个人或某个团队来保障的,而是整个团队一起努力的结果,因此,在公司级别需要 有一个规范的项目流程。 产品,保证迭代过程中的产品逻辑,对于可能的兼容,升…

基于Springboot+Vue的Java项目-宠物商城网站系统开发实战(附演示视频+源码+LW)

大家好!我是程序员一帆,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &am…

C++列表实现

文章目录 一、listView相关内容主要思想实例全部代码 二、QTreeView 一、listView 相关内容 QAbstractItemModel:一个抽象的类,为数据项模型提供抽象的接口,常见的的数据模型列如:QStringListModel,QStandardItemMode,QDirModel…