asp.net怎么实现按条件查询_【33期】分别谈谈联合索引生效和失效的条件

点击上方“Java面试题精选”,关注公众号

面试刷图,查缺补漏

>>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅。

这道题考查索引生效条件、失效条件。像这类问题才其实很有意义,建议各位以后面试其他伙伴的时候,多侧重这类问题的提问,比考察一般概念性的问题好多了。

能大概考察应聘者对写的程序是有注重做优化,提高代码质量和程序性能呢 还是只简单的CV了事。

联合索引失效的条件

联合索引又叫复合索引。两个或更多个列上的索引被称作复合索引。

对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部分,但只能是最左侧部分。例如索引是key index (a,b,c)。可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 。当最左侧字段是常量引用时,索引就十分有效。

利用索引中的附加列,可以缩小搜索的范围,但使用一个具有两列的索引不同于使用两个单独的索引。

复合索引的结构与电话簿类似,人名由姓和名构成,电话簿首先按姓氏对进行排序,然后按名字对有相同姓氏的人进行排序。如果您知道姓,电话簿将非常有用;如果您知道姓和名,电话簿则更为有用,但如果您只知道名不姓,电话簿将没有用处。

所以说创建复合索引时,应该仔细考虑列的顺序对索引中的所有列执行搜索或仅对前几列执行搜索时,复合索引非常有用;仅对后面的任意列执行搜索时,复合索引则没有用处。

如:建立 姓名、年龄、性别的复合索引。

create 

1

select * 

abc三个索引都在where条件里面用到了,而且都发挥了作用

2

select * 

where里面的条件顺序在查询之前会被mysql自动优化,效果跟上一句一样

3

select * 

a用到索引,b没有用,所以c是没有用到索引效果的

4

select * 

a用到了,b也用到了,c没有用到,这个地方b是范围值,也算断点,只不过自身用到了索引

5

select * 

因为a索引没有使用,所以这里 bc都没有用上索引效果

6

select * 

a用到了 b没有使用,c没有使用

7

select * 

a用到了索引,b在结果排序中也用到了索引的效果,a下面任意一段的b是排好序的

8

select * 

a用到了索引,但是这个地方c没有发挥排序效果,因为中间断点了,使用 explain 可以看到 filesort

9

select * 

b没有用到索引,排序中a也没有发挥索引效果

最后说说索引失效的条件

  • 不在索引列上做任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描

  • 存储引擎不能使用索引范围条件右边的列

  • 尽量使用覆盖索引(只访问索引的查询(索引列和查询列一致)),减少select *

  • mysql在使用不等于(!=或者<>)的时候无法使用索引会导致全表扫描

  • is null,is not null也无法使用索引

  • like以通配符开头(’%abc…’)mysql索引失效会变成全表扫描的操作。

问题:解决like‘%字符串%’时索引不被使用的方法?

0a38668487977706f13634fae46e14d8.png

字符串不加单引号索引失效

SELECT * 

一般性建议

  • 对于单键索引,尽量选择针对当前query过滤性更好的索引

  • 在选择组合索引的时候,当前Query中过滤性最好的字段在索引字段顺序中,位置越靠前越好。

  • 在选择组合索引的时候,尽量选择可以能够包含当前query中的where子句中更多字段的索引

  • 尽可能通过分析统计信息和调整query的写法来达到选择合适索引的目的

来源:https://blog.csdn.net/qq_35275233

最近三期

【30期】说一下HashMap的实现原理?

【31期】了解什么是 redis 的雪崩、穿透和击穿?

【32期】你知道Redis的字符串是怎么实现的吗?

与其在网上拼命找题? 不如马上关注我们~

b4661785bec9bd1ab8b6e3ed018f049f.png

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

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

相关文章

java 二分搜索获得大于目标数的第一位_程序员数据结构算法编程,二分查找搜索算法的原理与应用介绍!...

本文来讲一种搜索算法&#xff0c;即二分搜索算法&#xff0c;通常在面试时也会被问到。我们先来看一个例子&#xff0c;在图书馆通常是根据查到的编号去找书&#xff0c;可以在书架上按顺序一本本地查找&#xff0c;也可以找到一本书不符合预期时&#xff0c;再跳过一大部分书…

framework层和native层实现联网控制(iptable方式)

最近工作中&#xff0c;需要开发一个功能----联网控制&#xff0c;这个功能其实用过root的安卓机应该都知道&#xff0c;禁止某个应用连接移动网络或者wifi。 root后&#xff0c;通过su去执行iptable的命令就可以根据uid去控制应用联网权限 但是由于公司是做手机系统开发&#…

android去掉png图片灰色背景,JS解决PNG图片灰色背景问题

PNG图片用来制作漂亮的网页背景很实用&#xff0c;此方法也是比较简单的&#xff0c;会让网页增色不少。不过&#xff0c;万恶的IE似乎暗中做对&#xff0c;当你使用PNG图片的时候&#xff0c;IE会自动为PNG图片增加一个灰色背景&#xff0c;这真的好让人烦&#xff0c;那么有没…

2020idea插件怎么同步_VScode 插件整理

1、auto rename tag &#xff1a;HTML 标签自动闭合&#xff1b;避免了在整个页面中费劲查找。你想将一个H2标签更改为H3标签&#xff0c;或者你想将一个div标签更改为span标签&#xff0c;不管要做什么&#xff0c;你都要浪费时间来查找结束标签&#xff0c;这时候就该用这个插…

python 将两幅图拼接_清华王教授典藏的python电子书,整整10个G拿去不谢

终于拿到&#xff01;清华王教授典藏的电子书&#xff0c;整整10个G&#xff01;兄弟&#xff0c;毫无套路&#xff01;无偿获取方式:1.点赞评论2.关注小编&#xff0c;私信“Python”(点开头像就能看到私信按钮啦).Python指南——五行代码实现批量抠图你是否曾经想将某张照片中…

android fileinputstream 获取file,Android FileInputStream没有读取文件

经过数小时的淘洗后&#xff0c;我现在陷入困境..我在使用Android从文件中读取问题时&#xff0c;使用此方法执行此操作的方法如下private void open(String doc) throws IOException {FileInputStream FIS null;InputStreamReader ISR null;try {char[] inputBuffer new ch…

高效算法之动态规划(第15章)

有人说&#xff1a;越炫耀什么&#xff0c;越缺少什么。但我却以为&#xff1a;越缺少什么&#xff0c;越觉得别人炫耀什么。 ——李宫俊《李宫俊的诗》 0. 前言 参考图书《算法导论》   动态规划通常用来解决最优化问题&#xff0c;在这类问题中&#xff0c;我们通常做出一…

地磅称重软件源码_【漯河衡器】导致地磅称重不准原因及处理措施

地磅是一种新型的大型电子衡器&#xff0c;能够迅速、直观、高准确度地展现工商业、仓储、货站贸易计量的重要工具。做为贸易结算的工具&#xff0c;地磅的可靠性、准确性、科学性有着极为重要的影响。而在货物来往中&#xff0c;地磅是等价交换的桥梁&#xff0c;一旦地磅显现…

寻宝机器人电路板焊接_专业维修淮安市KUKA库卡KRC2机器人回收{机器人调试}

FANUC机器人伺服-023故障排除&#xff1a;FANUCR-2000六轴焊接机器人点焊进程中&#xff0c;J4机械臂显现自动滑动故障&#xff0c;机器人发出伺服故障报警&#xff0c;报警故障码为伺服-023&#xff0c;依据FANUC机器人维修手册&#xff0c;故障代码解释以下&#xff1a;伺服误…

android uber启动动画,仿 Uber 视频背景登录界面以及登录动画

现在有越来越多的 app 的登录/注册界面的背景是播放视频或者 gif&#xff0c;我主要看了 Uber 和 keep 的登录界面再配合拉勾的登录界面仿作了一个登录界面。1.首先&#xff0c;查资料我在 github 上找到了这两个库&#xff1a;-STLBGVideo 这个库是 oc 写的&#xff0c;但你的…

UIMenuController在label中的使用

要想在label中使用 必须是继承于label的分类 //// MYlabel.m// MenuController//// Created by 张明 on 16/3/8.// Copyright © 2016年 张明. All rights reserved.//#import "MYlabel.h"implementation MYlabel- (void)awakeFromNib{ [self setup];…

遍历列表python_Python 遍历List的三种方法

转载至https://www.cnblogs.com/pizitai/p/6398276.html #!/usr/bin/env python # -*- coding: utf-8 -*- if __name__ __main__: list [html, js, css, python] # 方法1 print 遍历列表方法1&#xff1a; for i in list: print ("序号&#xff1a;%s 值&#xff1a;%s&…

名图1.8智能隐藏功能_自动打包不脏手才是真智能,双11销冠,拓牛自动打包垃圾桶体验...

不是吧&#xff01;不是吧&#xff01;都是2020年了&#xff0c;不会还有人不知道电动垃圾桶的存在吧&#xff1f;如果你还不知道&#xff0c;那就跟5G智玩好物一起来看看最新上线的拓牛T Air Lite吧。首先&#xff0c;让我们看一下拓牛T Air Lite的外观。在大众的印象里&#…

android struts2 图片上传,xhEditor struts2实现图片上传

如果想要出现上传按钮,在xhEditor设置以下参数&#xff1a;html5Upload : false //此属性必须为falseupImgUrl : "ImgUpload.action" //上传服务器接口onUpload : insertUpload //服务器返回信息,JSON格式一、前台代码$(function() {…

软件版本号规范

1. 软件版本阶段说明 o Base版: 此版本表示该软件仅仅是一个假页面链接&#xff0c;通常包括所有的功能和页面布局&#xff0c;但是页面中的功能都没有做完整的实现&#xff0c;只是做为整体网站的一个基础架构。 o Alpha版: 此版本表示该软件在此阶段主要是以实现软件功能…

python如何画出多个独立的图片_python实现在一个画布上画多个子图

matplotlib 是可以组合许多的小图, 放在一张大图里面显示的. 使用到的方法叫作 subplot. 均匀画图 使用import导入matplotlib.pyplot模块, 并简写成plt. 使用plt.figure创建一个图像窗口. 1 2 3 import matplotlib.pyplot as plt plt.figure() 使用plt.subplot来创建小图. plt.…

e5cc温控仪通讯参数设定_产品介绍||DeltaWiFi通讯型多功能电表DPMC520W

Delta-WiFi通讯型多功能电表DPM-C520W台达WiFi通讯型多功能电表DPM-C520W &#xff0c;使用无线通信技术&#xff0c;非常适合于挑高空间和不易配线的盘体使用。可支持各种电力参数量测及谐波量测&#xff0c;支持报警设定、参数群组化设定&#xff0c;采用MODBUS-TCP协议&…

酷派删除android系统软件,【玩机教程】酷派手机root后不可删除系统自带程序+组件中英对照...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼〖对照表〗[File|文件] [English] [中文]ApplicationsProvider.apk Search Applications Provider 搜索应用提供程序(不可删除)AppStoreWidget.apk Application recommend 应用推荐(可删除)BackupRestoreConfirmation.apk (不可删除…

python字典程序题_急!一道关于python字典的编程题!求思路!

作业要求做一个python程序导入一个文本文件&#xff08;importsys,file_inopen(sys.argv[1],r))那个文本文件里都是AnimalId&#xff1a;Timestamp&#xff1a;StationId格式的数据比如a45:27-10-2009:s1。下面图片... 作业要求做一个python程序 导入一个文本文件&#xff08;i…

Servlet单实例多线程模式

http://kakajw.iteye.com/blog/920839 前言&#xff1a;Servlet/JSP技术和ASP、PHP等相比&#xff0c;由于其多线程运行而具有很高的执行效率。由于Servlet/JSP默认是以多线程模式执行的&#xff0c;所以&#xff0c;在编写代码时需要非常细致地考虑多线程的安全性问题。 JSP的…