mysql 3列索引_正确理解Mysql的列索引和多列索引

2023-11-15

MySQL数据库提供两种类型的索引,如果没正确设置,索引的利用效率会大打折扣却完全不知问题出在这。

CREATE TABLE test (

id         INT NOT NULL,

last_name  CHAR(30) NOT NULL,

first_name CHAR(30) NOT NULL,

PRIMARY KEY (id),

INDEX name (last_name,first_name)

);

以上创建的其实是一个多列索引,创建列索引的代码如下:

CREATE TABLE test (

id         INT NOT NULL,

last_name  CHAR(30) NOT NULL,

first_name CHAR(30) NOT NULL,

PRIMARY KEY (id),

INDEX name (last_name),

INDEX_2 name (first_name)

);

一个多列索引可以认为是包含通过合并(concatenate)索引列值创建的值的一个排序数组。 当查询语句的条件中包含last_name 和 first_name时,例如:

SELECT * FROM test WHERE last_name='Kun' AND first_name='Li';

sql会先过滤出last_name符合条件的记录,在其基础上在过滤first_name符合条件的记录。那如果我们分别在last_name和first_name上创建两个列索引,mysql的处理方式就不一样了,它会选择一个最严格的索引来进行检索,可以理解为检索能力最强的那个索引来检索,另外一个利用不上了,这样效果就不如多列索引了。

但是多列索引的利用也是需要条件的,以下形式的查询语句能够利用上多列索引:

SELECT * FROM test WHERE last_name='Widenius';

SELECT * FROM test WHERE last_name='Widenius' AND first_name='Michael';

SELECT * FROM test WHERE last_name='Widenius' AND (first_name='Michael' OR first_name='Monty');

SELECT * FROM test WHERE last_name='Widenius' AND first_name >='M' AND first_name 

以下形式的查询语句利用不上多列索引:

SELECT * FROM test WHERE first_name='Michael';

SELECT * FROM test WHERE last_name='Widenius' OR first_name='Michael';

多列建索引比对每个列分别建索引更有优势,因为索引建立得越多就越占磁盘空间,在更新数据的时候速度会更慢。

另外建立多列索引时,顺序也是需要注意的,应该将严格的索引放在前面,这样筛选的力度会更大,效率更高。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql 3列索引_正确理解Mysql的列索引和多列索引 的相关文章

  • docker从入门到实战

    Docker Docker 基础 Docker 容器与镜像的概念 容器 Container 容器是一种可执行的虚拟化环境 它包含了应用程序以及运行此应用程序所需的所有依赖项 包括软件 库 配置等 容器只存在于主机操作系统的内存中 不占用独立
  • vue中函数回调传值

    在业务开发中 有时候会碰到一种情况 组件内部会触发一些事件用来请求新的数据 数据请求到后将新的数据继续在组件内进行处理 这个场景我们有三种方式可以实现它 将数据请求写在组件内部 缺点不好维护 违反了单项数据流的原则 通常我们可以通过this
  • js验证邮箱的正则表达式

    最近小小研究了一下正则表达式 觉得写正则表达式还挺有意思的 先想推荐一个网址 把正则表达式的基本语法都总结了 很不错 https msdn microsoft com zh cn library ae5bf541 v vs 100 aspx
  • SiliconLab GSDK 4.2.2 创建 Z3Gateway 工程

    如题 在SSv5的My Product选项下 需要添加Linux 32 Bit 否则在Example Projects Demos中无法查找到zigbeegateway相关的demo My Product 中的内容添加成功后 再次搜索Exa
  • 剑指 Offer 29. 顺时针打印矩阵(java+python)

    输入一个矩阵 按照从外向里以顺时针的顺序依次打印出每一个数字 示例 1 输入 matrix 1 2 3 4 5 6 7 8 9 输出 1 2 3 6 9 8 7 4 5 示例 2 输入 matrix 1 2 3 4 5 6 7 8 9 10
  • Anchor Base 和 Anchor Free

    1 概念 1 1 什么是Anchor Anchor也叫做锚 其实是一组预设的边界框用于在训练时学习真实的边框位置相对于预设边框的偏移 通俗点说就是预先设置目标可能存在的大概位置 然后再在这些预设边框的基础上进行精细化的调整 而它的本质就是为
  • npm run build 打包后,如何查看效果

    我们用vue cli搭建的项目执行npm build后本地打开页面空白 如果才能查看npm run build之后的结果呢 首先我们看一下提示 Tip built files are meant to be served over an H
  • 手机第一次怎么充电?

    来说说电池保养问题 现在手机用的大概是600 1800毫安时左右的锂电池 而锂电池是没有记忆的 可以随时随地充电 电池和耳机一样有一个煲的过程 刚买回来的时候电池的功效不会发挥到最大 刚买回来用的前两次一定要把电量用完再充 这点很重要 大概
  • LayUI系列(三)之动态添加选项卡

    文章目录 前言 一 什么是Tab选项卡 二 动态选项卡 1 通过网站查找layui选项卡的页面布局代码 2 动态添加选项卡 3 将选项卡的名称换成选中的菜单名称 4 已打开的选项卡不再重复打开 5 选择已被打开的选项卡则进行选项卡的转换 三
  • JS中的prototype

    JS中的prototype JS中的phototype是JS中比较难理解的一个部分 本文基于下面几个知识点 1 原型法设计模式 在 Net中可以使用clone 来实现原型法 原型法的主要思想是 现在有1个类A 我想要创建一个类B 这个类是以
  • AB实验核心知识点总结

    一 AB实验的价值以及应用场景 AB实验目前已经是互联网以及泛互联网行业的标配 像字节这样的互联网大厂 元气森林这样的饮料公司都把AB实验作为产品功能迭代的重要的工具 它之所以如此重要是因为其能给出定性因果和定量增长两种核心价值 让产品快速
  • Pycharm在Debug时,Tensor张量显示不全问题

    问题 在Debug时 当我们需要对某个张量查看它里面各个数值 只显示开头和结尾的部分数据 出现张量显示不全 解决方法 对要查看到数据按下鼠标右键 选择 评估表达式 的选项 对要查看的数据 先转换到cpu上 再转换到numpy 最后 点击 评
  • react学习总结

    目录 1 react生命周期 2 关于组件 className 设置的问题 3 react 中实现一些动画的效果 4 encodeURIComponent 5 react项目开发步骤推荐 6 webpack 的特色与功能 1 react生命
  • 22年菲尔兹奖获得者HUGO DUMINIL-COPIN 研究内容总结

    雨果 迪米尼 科潘获得 2022 的菲尔兹数学奖 因解决了统计物理中相变 概率理论的长期问题 特别是三维和四维问题以及二维中的不可积情况 下 雨果最显著的成果是三维和四维 Ising 模型 他与合作者解决了 80 年代以来一直存在的问题 建
  • 03使用Spring基于XML的方式注册第一个组件

    基于XML的方式注册第一个组件 开发步骤 第一步 创建Maven工程配置生成的pom xml文件 添加spring context基础依赖和junit依赖 注意根据Spring官方文档描述 Spring6需要JDK版本17 当添加Sprin
  • windows环境下启动kafka的

    1 命令 bin windows kafka server start bat config server properties
  • vs2013配置CUDA .cu文件

    1 Linker中添加相应lib 主要有cublas lib cublas device lib cuda lib cudadevrt lib cudart lib cudart static lib 2 右键项目 gt Bulid Dep
  • json转对象

    JSON parseObject方法可以实现json转化为对象 public class Test1 public static void main String args String jsonStr n code 200 n data
  • 机器学习笔试面试超详细总结(四)

    文章目录 151 Ridge回归 Lasso回归 坐标下降法求解 152 电影推荐系统是以下哪些的应用实例 153 决策树是否可以用来聚类 可以 154 什么方法最适合于在n维空间做异常点检测 155 逻辑回归和多元回归分析的不同 156

随机推荐

  • 人工智能芯片发展 (1

    人工智能技术随着以深度学习为核心算法的大力发展 目前已经在场景识别 语音识别等方面迅猛发展 影响人工智能的三大要素 数据 算法 算力 其中算力 是实现算法的重要基础 人工智能芯片也处于这个时代的战略至高点 目前人工智能 芯片分为三类 a A
  • 堆排序(浅谈大顶堆与小顶堆)

    什么是堆 堆是一种非线性结构 本篇随笔主要分析堆的数组实现 可以把堆看作一个数组 也可以被看作一个完全二叉树 通俗来讲堆其实就是利用完全二叉树的结构来维护的一维数组 按照堆的特点可以把堆分为大顶堆和小顶堆 大顶堆 每个结点的值都大于或等于其
  • 5 分钟,教你用 Docker 部署一个 Python 应用

    在使用传统物理机或云服务器上部署项目都会存在一些痛点 比如 项目部署速度慢 资源浪费 迁移难且扩展低 而使用 Docker 部署项目的优势包含 高效利用系统资源 服务启动更快 环境一致 迁移更加方便 本篇文章将介绍 Docker 部署一个
  • Python-Flask 视图和模板(4)

    Flask的response和request对象 一 视图 V 1 response响应对象 2 request请求对象 二 模板 1 返回模板文件 2 重定向 url for 路径反向解析 3 模板的语法 4 过滤器 5 模板复用 6 宏
  • 你们都说淘宝是最难爬的网站了?用我这个方法包你学会!

    导语 文章教程发了蛮多 经常会碰到一个问题 淘宝怎么爬的啊 它反爬机制好难搞啊 能不能出一期教程爬一下淘宝 今天就教大家如何采集淘宝数据并实现数据分析 今天就给大家带来一个淘宝商品数据小爬虫吧 顺便按老规矩把抓取到的数据可视化一波 废话不多
  • 【ABAP系列】SAP DOI技术中I_OI_SPREADSHEET接口的使用

    公众号 SAP Technical 本文作者 matinal 原文出处 http www cnblogs com SAPmatinal 原文链接 ABAP系列 SAP DOI技术中I OI SPREADSHEET接口的使用 前言部分 大家可
  • pb filecopy文件到服务器,怎样在PB中实现文件的拷贝与删除 (转)

    怎样在PB中实现文件的拷贝与删除 转 more 怎样在PB中实现的拷贝与删除 可借助外部 可用函数实现 1 文件拷贝 函数声明 FUNCTION boolean CopyFileA ref string cfrom ref string c
  • ffmpeg webm 提取_ffmpeg简单使用教程 转码、压制、提取、截取、合并、录屏等

    1 查看帮助文档 ffmpeg是一个开源的音视频转码工具 本文是自己学习ffmpeg使用方式的一个笔记 将ffmpeg命令行工具加入环境变量之后 输入ffmpeg h打印帮助文档 PS C Users mudssky Desktop gt
  • CheckStyle 自定义编码规范

    CheckStyle能够帮助程序员检查代码是否符合制定的规范 通过将CheckStyle的检查引入到项目构建中 可以强制让项目中的所有的开发者遵循制定规范 而不是仅仅停留在纸面上 如果发现代码违反了标准 比如类名未以大写开头 单个方法超过了
  • 解决Unity新建脚本时MonoBehaviour无法继承不变绿

    解决Unity新建脚本时MonoBehaviour无法继承不变绿不自动补全 问题 有很多初学开发的小朋友发现下载unity后 在unity新建脚本时发现脚本继承MonoBehaviour是还是灰色的 这是因为你在unity中没有把Visua
  • 数据挖掘导论 复习一(介绍+数据预处理方法+定性归纳)

    数据挖掘 数据库 机器学习 算法 经验 模型 机器学习任务 分类 回归 聚类 KMeans DCSAN 层次聚类 数据降维 数据预处理 常用分类器 KNN 贝叶斯 逻辑回归 决策树 随机森林 本书将介绍数据挖掘与数据库知识发现的基本知识 以
  • 拔电源磁盘变成只读Read-only file system

    拔电源磁盘变成只读Read only file system 问题 查询 解决 问题 搭建openwrt的过程中 由于机器没有关机键 而且没有进行后台命令关机 直接拔电源之后 重启 任何操作都提示只读状态 那么这个时候什么都操作不了 无奈只
  • Consummer<T>函数式接口中的andThen方法

    public static void main String args Consumer
  • 网站页面实现python代码交互,Ajax与Python服务器交互,在网页实现简单的Python3代码的运行...

    说一下大概的思路 python 1 目标 在输入框输入Python3代码 点击运行 右边显示代码结果 服务器 2 步骤 ide 那首先咱们须要一个页面来显示咱们的输入输出 还有一个按钮 spa 而后就是经过点击按钮事件获取输入的内容 用到了
  • java方法参数传递机制

    值传递机制 敲黑板 记重点 如果参数是基本数据类型 此时实参赋给形参的是实参真实储存的数据值 如果参数是引用数据类型 此时实参赋给形参的是实参储存数据的地址值 什么的基本数据类型 如果参数是基本数据类型那么传的是变量的值 例如 int a
  • 姿态估计之3D 人体姿态估计 - 总结(1)【转】

    参考 3D 人体姿态估计简述 知乎 3D人体姿态估计 介绍及论文归纳 2021 CVPR Graph Stacked Hourglass Networks for 3D Human Pose Estimation 2D 3D人体姿态估计 2
  • VS2017+QT5.12.0+VTK8.1.1+PCL1.9.1环境配置

    资源 链接 https pan baidu com s 13hbBWECg2DIMojL9oks8NQ pwd vysx 提取码 vysx 主要流程 VS2017 Qt5 12 0 PCL1 9 1开发环境配置过程详细记录 尚庆龙的博客 C
  • The remote endpoint was in state [TEXT_FULL_WRITING]

    使用websocket出现的坑 The remote endpoint was in state TEXT FULL WRITING which is an invalid state for called method websocket
  • estimator使用

    一 model fn 函数有5个输入参数features labels mode params config 并输出一个EstimatorSpec实例 features input fn的第一个输出 labels input fn的第二个输
  • mysql 3列索引_正确理解Mysql的列索引和多列索引

    MySQL数据库提供两种类型的索引 如果没正确设置 索引的利用效率会大打折扣却完全不知问题出在这 CREATE TABLE test id INT NOT NULL last name CHAR 30 NOT NULL first name