索引出错问题。为什么建立了索引,也避免了索引失效问题,还是会出现查询不走索引的情况?

什么建立了索引,也避免了索引失效问题,还是会出现查询不走索引的情况?
其实这个问题在于CBO(Cost-based Optimizer),优化器是很强大的!他根据开销来决定是否要用索引以及用哪个索引!
总的来说Cost = Server_Cost + Engine_Cost,也就是CPU开销和io开销
那具体哪些情况会导致有索引也不走呢?

查找条数多

当查找条数非常多的情况下,二级索引然后再回表去读磁盘,开销还是挺大的。有可能优化器经过计算后就直接全表扫描主键了,只用读一遍磁盘。

索引状态分布不均

通常来讲索引建立在高选择性的字段,比如订单日期、订单ID等。但对于某些业务其实比较特殊,比如订单状态,只有三种,已完成、支付中、超时。这种业务几种状态肯定是分布不均匀的,已完成的肯定特别多,超时或者支付中可能会少。所以实际上建立索引为了索引后两种状态的订单。但是,通常优化器会认为几个状态的比例是等比的也就是各占 1 3 \frac{1}{3} 31,所以会避免过多回表而不用索引。但实际上我们就是为了查少量的才建立索引!所以这时候我们要告诉优化器这几种比例不同,这样就可以用上索引了。
在这里插入图片描述

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

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

相关文章

Spring-SpringFramework特性以及IOC相关知识

SpringFramework五大模块 特性 IOC思想和DI IOC是容器,用于管理资源 IOC:Inversion of Control 反转控制 DI:Dependecy Injection 依赖注入 组件以预先定义好的方式接受来自容器的资源注入 IOC在Spring中的实现 spring提供两种方式&…

图书管理系统源码,图书管理系统开发,图书借阅系统源码四TuShuManager应用程序MVC视图View

Asp.net web应用程序MVC之View视图 .ASP.NET MVC页面也就是要说的视图基本被放在Views文件夹下; 2.利用APS.NET MVC模板生成框架,Views文件夹下的默认页面为.cshtml页面; 3.ASP.NET MVC默认页面为Razor格式的页面,因此默认页面为.…

NX二次开发UF_CURVE_ask_wrap_curves 函数介绍

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_ask_wrap_curves Defined in: uf_curve.h int UF_CURVE_ask_wrap_curves(tag_t wrap_curve_object, int * num_output_curves, tag_t * * output_curves ) overview 概述 …

了解静态测试?

静态测试是一种软件测试方法,它主要通过分析软件或代码的静态属性来检查潜在的问题和缺陷,而无需实际执行程序。这种测试方法侧重于检查源代码和其他软件文档,以发现错误并提高软件质量。 为什么要做静态测试? 提前发现和修复错…

[操作系统]京东一面~进程相关汇总

1 进程、线程、协程的概念 进程: 静态程序的运行状态就叫进程。是资源分配的基本单位。 线程: 是进程的一个执行单元,是进程内的调度实体。是CPU调度的独立单位。线程也被称为轻量级进程。 协程: 是一种比线程更加轻量级的存在。…

vue3安装eslint和prettier,最简单的步骤

第1步: 安装eslint yarn add eslint -D 第2步: 在根文件夹中,创建.eslintrc.js文件 第3步: 在package.json文件中新增命令 "lint": "eslint --fix --ext .ts,.tsx,.vue src --quiet","prettier"…

红米手机如何远程控制荣耀手机?

很多人都知道,华为体系有【畅联】,与华为手机或平板“畅连”通话时,可共享屏幕给对方,一边聊天一边演示,还可在屏幕上涂鸦帮助理解。同样,小米体系有【小米通话】,它的远程协助功能可以帮助朋友…

蓝桥杯第100 题 九宫幻方 DFS 全排列 C++ 解题思维

题目 九宫幻方https://www.lanqiao.cn/problems/100/learning/?page1&first_category_id1&name%E4%B9%9D 思路和解题方法 一 (DFS) 首先,定义了一些全局变量和数组。vis数组用于标记已经出现过的数字,a数组用于存储数独的初始状态…

mac上Homebrew的安装与使用

打开终端:command空格 ,搜索‘’终端 ’,打开终端 在终端中输入以下命令并按下回车键: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"这个命令会自动下载并安装…

Ubuntu18.04磁盘取证-中难度篇

涉及的镜像文件: sdb.vhd uac.tar ubuntu.20211208.mem 需要利用的工具: volatility3 volatility2.6.1 FTK/Autopsy Strings 题干 容器是一个Ubuntu Linux 蜜罐,用来观察利用 CVE-2021-41773 的漏洞攻击者想要做什么。 您将看到一个 cr…

【c++】多线程大幅缩减时间

多线程在进行复杂运算时能够大量节约时间 提醒自己能够在多线程运算的时候一定要充分利用 能够省下2/3的时间 测试代码 #include<vector> #include <iostream> #include <thread> using namespace cv; using namespace std; int result1 0 ; bool thread…

【TiDB】TiDB离线方式部署

目录 1 下载TiDB离线组件包 2 安装TiUP 3 合并离线包 4 TIDB 软件和硬件环境建议配置 5 TiDB环境与系统配置检查 6 生成集群初始化配置文件模板 7 执行部署命令 1 检查就能存在的潜在风险 2 手动修复风险 3 部署 TiDB 集群 8 查看TIUP管理的集群情况 9 检查部署的…

【jupyter notebook中插件 nbextensions 安装失败分析与解决方法】

文章目录 问题描述分析与解决总结 问题描述 一开始在安装 notebook 中的插件 nbextensions 时根本没有注意到版本的适配问题&#xff0c;都是进行默认的安装&#xff0c;结果安装是最新版本的 notebook7.x&#xff0c;恰好 notebook7.x 版本不再适应插件 nbextensions&#xf…

Java八股文面试全套真题【含答案】- SpringMVC篇

以下是一些关于Spring MVC语言的经典面试题以及它们的答案&#xff1a; 什么是Spring MVC框架&#xff1f;它的特点是什么&#xff1f; Spring MVC是基于Java的一种Web应用框架&#xff0c;用于开发基于MVC&#xff08;模型-视图-控制器&#xff09;模式的Web应用程序。它的特…

Oracle 内置sql函数大全

F.1字符函数——返回字符值 这些函数全都接收的是字符族类型的参数(CHR除外)并且返回字符值.除了特别说明的之外,这些函数大部分返回VARCHAR2类型的数值.字符函数的返回类型所受的限制和基本数据库类型所受的限制是相同的,比如: VARCHAR2数值被限制为2000字符(ORACLE 8中为400…

Kafka介绍(一)

什么是kafka Apache Kafka 是一个开源分布式事件流平台&#xff08;通俗点说其实就是一个类似中介的东西&#xff0c;房东将信息放入中介&#xff0c;客户咨询中介或者中介推送信息给咨询过的客户&#xff0c;获取消息&#xff09;&#xff0c;它的核心能力有&#xff0c;高吞吐…

使用Arthas排查性能问题

Arthas 是一款线上监控诊断产品&#xff0c;通过全局视角实时查看应用 load、内存、gc、线程的状态信息&#xff0c;并能在不修改应用代码的情况下&#xff0c;对业务问题进行诊断&#xff0c;包括查看方法调用的出入参、异常&#xff0c;监测方法执行耗时&#xff0c;类加载信…

AttributeError: ‘list‘ object has no attribute ‘size‘解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

CSR证书开发详解

文章目录 一、CSR证书基本概念二、CSR证书和服务器证书区别三、CSR证书解析源码 一、CSR证书基本概念 CSR&#xff08;Certificate Signing Request&#xff09;证书签名请求是一种包含公钥及其相关信息的文件&#xff0c;用于向证书颁发机构&#xff08;CA&#xff09;请求数…

Open Feign 源码解析(四) --- 请求对象构造(上)

Open Feign 源码解析四 请求对象的构造&#xff08;上&#xff09; 源码前三篇文章写了这个图的过程 源码前三篇文章的内容归纳起来就是讲了这样的问题&#xff1a; 如何把接口转换为具有发送http请求能力的feign client对象以及如何整合到Spring容器中&#xff1f; 如何构造…