复合索引abc,查询的时候查c a和ac都能用到索引吗

复合索引(也称为联合索引)的使用遵循“最左前缀原则”。这意味着查询条件必须从索引定义的最左边开始,并且连续地匹配索引中的列,才能有效地使用该索引。具体到你提到的复合索引 abc,它意味着索引按照 a、b 和 c 列的顺序进行排序。

根据这一原则,以下情况可以有效利用复合索引 abc:

1,查询条件包含 a,则可以使用索引。
2,查询条件包含 a 和 b,则可以使用索引。
3,查询条件包含 a、b 和 c,则可以使用索引。
但是,以下情况不能有效利用复合索引 abc:
1,如果查询只包含 c,则不能使用索引,因为没有从最左前缀开始。
2,如果查询包含 c 和 a,但由于没有包含 b,也不能使用索引。
对于你提到的查询 c a 和 ac:

c a:这个查询顺序不正确,因为没有从索引的最左前缀 a 开始,所以复合索引 abc 不能被使用。
ac:这个查询也不能使用复合索引 abc,因为尽管它从 a 开始,但在 c 出现之前缺少了 b,打破了连续性。
因此,复合索引 abc 只能在查询条件从 a 开始并连续包含 b 和 c 的情况下被有效使用。如果需要优化涉及 c 和 a 的查询,可能需要创建一个额外的复合索引,如 ca 或者 cba,具体取决于查询模式和表的使用情况。在设计复合索引时,应考虑到最常见的查询模式,以确保索引能够被有效地利用。

二,验证

PostgreSQL 数据库中创建一个学生信息表tbl_student_info ,包含字段id,name,age,sex,height,weight,用name,age,height建立联合索引,并提供创建30个学生信息的sql,用来验证联合索引

CREATE TABLE tbl_student_info (id numeric(19) PRIMARY KEY,name VARCHAR(100) NOT NULL,age INTEGER NOT NULL,sex varvhar(4),height DECIMAL(4,1),weight DECIMAL(4,1)
);-- 创建联合索引
CREATE INDEX idx_name_age_height ON tbl_student_info (name, age, height);

创建一个自增队列,用来创建id

create sequence tbl_student_info_seq;

创建30条数据:

INSERT INTO tbl_student_info (id,name, age, sex, height, weight) VALUES (tbl_student_info_seq.nextval,'张三', 20, '男', 175.0, 65.0);
INSERT INTO tbl_student_info (id,name, age, sex, height, weight) VALUES (tbl_student_info_seq.nextval,'李四', 21, '女', 162.0, 52.0);
INSERT INTO tbl_student_info (id,name, age, sex, height, weight) VALUES (tbl_student_info_seq.nextval,'王五', 22, '男', 178.0, 70.0);
INSERT INTO tbl_student_info (id,name, age, sex, height, weight) VALUES (tbl_student_info_seq.nextval,'赵六', 19, '女', 165.0, 55.0);
INSERT INTO tbl_student_info (id,name, age, sex, height, weight) VALUES (tbl_student_info_seq.nextval,'周七', 23, '男', 180.0, 75.0);
INSERT INTO tbl_student_info (id,name, age, sex, height, weight) VALUES (tbl_student_info_seq.nextval,'吴八', 20, '女', 160.0, 50.0);
INSERT INTO tbl_student_info (id,name, age, sex, height, weight) VALUES (tbl_student_info_seq.nextval,'郑九', 21, '男', 176.0, 68.0);
INSERT INTO tbl_student_info (id,name, age, sex, height, weight) VALUES (tbl_student_info_seq.nextval,'孙十', 22, '女', 163.0, 53.0);
INSERT INTO tbl_student_info (id,name, age, sex, height, weight) VALUES (tbl_student_info_seq.nextval,'钱十一', 19, '男', 172.0, 63.0);
INSERT INTO tbl_student_info (id,name, age, sex, height, weight) VALUES (tbl_student_info_seq.nextval,'冯十二', 23, '女', 168.0, 57.0);INSERT INTO tbl_student_info (id,name, age, sex, height, weight) VALUES (tbl_student_info_seq.nextval,'陈十三', 20, '男', 177.0, 67.0);
INSERT INTO tbl_student_info (id,name, age, sex, height, weight) VALUES (tbl_student_info_seq.nextval,'沈十四', 21, '女', 161.0, 51.0);
INSERT INTO tbl_student_info (id,name, age, sex, height, weight) VALUES (tbl_student_info_seq.nextval,'韩十五', 22, '男', 179.0, 71.0);
INSERT INTO tbl_student_info (id,name, age, sex, height, weight) VALUES (tbl_student_info_seq.nextval,'杨十六', 19, '女', 164.0, 54.0);
INSERT INTO tbl_student_info (id,name, age, sex, height, weight) VALUES (tbl_student_info_seq.nextval,'周十七', 23, '男', 181.0, 76.0);
INSERT INTO tbl_student_info (id,name, age, sex, height, weight) VALUES (tbl_student_info_seq.nextval,'吴十八', 20, '女', 166.0, 56.0);
INSERT INTO tbl_student_info (id,name, age, sex, height, weight) VALUES (tbl_student_info_seq.nextval,'郑十九', 21, '男', 174.0, 66.0);
INSERT INTO tbl_student_info (id,name, age, sex, height, weight) VALUES (tbl_student_info_seq.nextval,'王二十', 22, '女', 167.0, 58.0);
INSERT INTO tbl_student_info (id,name, age, sex, height, weight) VALUES (tbl_student_info_seq.nextval,'赵二十一', 19, '男', 173.0, 64.0);
INSERT INTO tbl_student_info (id,name, age, sex, height, weight) VALUES (tbl_student_info_seq.nextval,'李二十二', 23, '女', 169.0, 59.0);INSERT INTO tbl_student_info (id,name, age, sex, height, weight) VALUES (tbl_student_info_seq.nextval,'刘二十三', 20, '男', 176.0, 69.0);
INSERT INTO tbl_student_info (id,name, age, sex, height, weight) VALUES (tbl_student_info_seq.nextval,'陈二十四', 21, '女', 162.0, 52.0);
INSERT INTO tbl_student_info (id,name, age, sex, height, weight) VALUES (tbl_student_info_seq.nextval,'杨二十五', 22, '男', 178.0, 72.0);
INSERT INTO tbl_student_info (id,name, age, sex, height, weight) VALUES (tbl_student_info_seq.nextval,'周二十六', 19, '女', 165.0, 55.0);
INSERT INTO tbl_student_info (id,name, age, sex, height, weight) VALUES (tbl_student_info_seq.nextval,'吴二十七', 23, '男', 180.0, 75.0);
INSERT INTO tbl_student_info (id,name, age, sex, height, weight) VALUES (tbl_student_info_seq.nextval,'郑二十八', 20, '女', 160.0, 50.0);
INSERT INTO tbl_student_info (id,name, age, sex, height, weight) VALUES (tbl_student_info_seq.nextval,'王二十九', 21, '男', 176.0, 68.0);
INSERT INTO tbl_student_info (id,name, age, sex, height, weight) VALUES (tbl_student_info_seq.nextval,'李三十', 22, '女', 163.0, 53.0);

验证联合索引

为了验证联合索引是否被正确使用,你可以执行一些查询,比如:

-- 查询1: 使用name, age和height
EXPLAIN (ANALYZE, BUFFERS) 
SELECT * FROM tbl_student_info WHERE name='张三' AND age=20 AND height=165.0;-- 查询2: 使用name和age
EXPLAIN (ANALYZE, BUFFERS) 
SELECT * FROM tbl_student_info WHERE name='李四' AND age=20;-- 查询3: 只使用name
EXPLAIN (ANALYZE, BUFFERS) 
SELECT * FROM tbl_student_info WHERE name='王五';-- 查询4: 只使用height
EXPLAIN (ANALYZE, BUFFERS) 
SELECT * FROM tbl_student_info WHERE height=165.0;

2024年7月12号

尴尬了:我使用的TDsql,只查height,也使用了索引

在这里插入图片描述

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

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

相关文章

基于docker-compose部署zabbix7.0

1.安装docker和docker-compose 已有可跳过,没有参照我的docker一件安装脚本连接放在下方 一键安装dockerv24.0.6以及docker-compose可离线_docker 24对应docker-compose-CSDN博客 2.运行zabbix-server 1.创建zabbix工作目录 mkdir /zabbix 2.编写docker-compos…

求问DAMASK求解中关于yaml文件,报错显示:type dismatch in yaml date node

🏆本文收录于《CSDN问答解答》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&…

Transformer神经网络回归预测的MATLAB实现

Transformer神经网络最初是为自然语言处理(NLP)任务设计的,但它们也可以成功应用于其他序列数据的处理,如时间序列预测和回归任务。 在回归预测中使用Transformer网络通常涉及以下关键步骤和概念: 1. Transformer架…

代码随想录-暑假算法第一天(数组篇)

代码随想录-暑假算法第一天(数组篇) 1. 二分查找 力扣题目链接(opens new window) 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否…

回车不搜索直接页面刷新问题解决

使用技术栈:vue3、elementUiPlus 问题:回车触发方法,会刷新整个页面,不执行搜索 解决方法:在搜索的表单中增加submit.native.prevent submit.native.prevent

GeoTrust ——适合企业使用的SSL证书!

GeoTrust是一家全球知名的数字证书颁发机构(CA),其提供的SSL证书非常适合企业使用。GeoTrust的SSL证书为企业带来了多重优势,不仅在验证级别、加密强度、兼容性、客户服务等方面表现出色,而且其高性价比和灵活的证书选…

C 语言中如何实现图结构?

🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会! 📙C 语言百万年薪修炼课程 【https://dwz.mosong.cc/cyyjc】通俗易懂,深入浅出,匠心打磨,死磕细节,6年迭代&…

[图解]分析模式-01-概述1

1 00:00:01,380 --> 00:00:01,770 好 2 00:00:02,340 --> 00:00:06,440 非常感谢大家能够来上我们 3 00:00:06,450 --> 00:00:07,960 分析模式高阶的课程 4 00:00:09,310 --> 00:00:13,440 这个内容之前在分析设计高阶 5 00:00:13,450 --> 00:00:17,840 也就…

电气常用知识

1、常开、常闭 在不加外力作用下,展示的状态就是常 因此,常开就是在不加外力作用下的 开的状态,也就是断开的状态 常闭就是在不加外力作用下的闭合的状态,也就是闭合的状态 2、单控双控 单控:一个东西只有两种状态…

Ubuntu 修改~/.bashrc终端选择是否使用annconda环境

首先需要明白的是anaconda虽然自带了python,但安装anaconda后并不会覆盖掉你原来的python(pip也是一样的),但安装anaconda后它会把自己的bin目录(里面有python、pip、conda等命令)加到PATH上,而…

宝马退出价格战,19万买不到i3了

ChatGPT狂飙160天,世界已经不是之前的样子。 更多资源欢迎关注 宝马退出价格战 这一消息,源自知名汽车博主孙少军。 7月11日他发文称,“因价格战导致门店亏损严重,宝马7月将会开始降量保价。” 第二天他又做了补充&#xff0c…

FastAPI 学习之路(四十二)利用Docker部署发布

我们之前的部署都是基于本地的部署,我们这次来看下,如何使用docker部署我们的fastapi项目。 编写Dockerfile ①:首先编写一个docker镜像的制作文件Dockerfile FROM python:3.10RUN pip install fastapi uvicorn aiofiles sqlalchemy pytho…

基于蓝牙iBeacon定位技术的商场3D楼层导视软件功能详解与实施效益

在现代商场的繁华与复杂中,寻找目的地往往令人头疼。维小帮3D楼层导视软件以其创新技术,为顾客带来无缝、直观的跨楼层导航体验,让每一次商场消费都成为享受。 商场3D楼层导视软件功能服务 3D多楼层导视地图,商场布局一览无遗 …

Linux进程——进程的概念

文章目录 PCB进程排队进程标识符pid终止进程获取进程id父进程与子进程 我们在上一节内容中有简单谈到进程的感性理解,他在课本上的概念是,程序的一个执行实例或正在执行的程序 但在本质上,他其实就是一个被分配了系统资源(CPU&am…

EtherCAT总线耦合器:在欧姆龙SysmacStudio软件里的配置步骤

EtherCAT总线适配器:在欧姆龙SysmacStudio软件里的配置步骤 EtherCAT总线适配器XD7000作为网络接口,连接主控制器(如PLC)和其他EtherCAT设备,实现实时、高效的数据交换。通过EtherCAT总线耦合器,用户能够将…

类和对象(初)

目录 一、面向过程和面向对象初步认识 二、类的引入 命名规则 三、类的定义 四、访问限定符 五、类的作用域 六、类的实例化 七.类对象模型 一、面向过程和面向对象初步认识 1.C语言是面向过程的,关注的是过程,分析出求解问题的步骤,…

鸿蒙语言基础类库:【@ohos.data.storage (轻量级存储)】

轻量级存储 轻量级存储为应用提供key-value键值型的文件数据处理能力,支持应用对数据进行轻量级存储及查询。数据存储形式为键值对,键的类型为字符串型,值的存储数据类型包括数字型、字符型、布尔型。 说明: 开发前请熟悉鸿蒙开发…

第一个基于FISCOBCOS的前后端项目(发行转账)(已开源)

本文旨在介绍一个简单的基于fiscobcos的前后端网站应用。Springbootjs前后端不分离。 所使用到的合约也是一个最基本的。首先您需要知道的是完整项目分为三部分,1是区块链平台webase搭建(此项目使用节点前置webase-front即可),2是…

游戏AI的创造思路-技术基础-行为树

行为树源自于游戏,但又不单单局限在游戏中,现代的行为树为游戏提供了一套快速简洁的控制NPC/AI的方法。所以本篇来讲讲行为树这个老祖宗~~~~ 目录 1. 行为树的定义 2. 发展历史 2.1. 起源与早期发展 2.2. 关键节点与重要进展 2.3. 当前现状与未来 …

人工智能大模型讲师培训老师叶梓介绍及多模态大模型原理与实践提纲

培训需要解决的问题 通过本次培训,拓展对多模态AI应用领域的视野,帮助团队聚焦AI赋能创新突破,提升对AI服务的技术认知与理解,更好地助力业务智能化业务建设。 培训时长 1天 培训老师介绍 叶梓,工学博士&#xff0…