mysql 查询优化 、索引失效

这篇具有很好参考价值的文章主要介绍了mysql 查询优化 、索引失效。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

mysql 查询优化 、索引失效,mysql,adb,android

查询优化
物理查询优化

通过索引和表连接方式等技术来进行优化,这里重点需要掌握索引的使用

逻辑查询优化

通过SQL 等价变换 提升查询效率,直白一点就是说,换一种查询写法执行效率可能更高

索引失效
  1. 计算、函数、类型转换(自动或手动)导致索引失效

select sql_no_cache * from student where left(sutdent_name,3)=‘abc’ type: all
优化
select sql_no_cache * from student where student_name like ‘abc%’ tyoe: range

假设student_name 数据类型 varchar(5),且student_name 有普通索引
select sql_no_cache * from student where student_name =123 type:all
优化
select sql_no_cache * from student where student_name =‘123’ type:index

create index idx_sno on student(stuno);
select sql_no_cache * from student where stuno+1=2023008; type:all
优化
select sql_no_cahe * from student where stuno=2023007 type: index

联合索引(复合索引)
对于多列索引,过滤条件要使用索引必须按照索引建立的顺序,依次满足,一旦跳过某个字段,索引后面的字段都无法被使用。
如果查询条件中没有使用这些字段中第一个字段时,多列(联合)索引不会被使用。

范围条件右边的列索引失效
create index idx_age_classId_name on student(age,classId,name);
select sql_no_cache * from student where student.age=30 and student.classId>20 and student.name=‘abc’; ## name 索引就失效了
应用开发中范围查询,例如 金额查询、日期查询往往都是范围查询。应将查询条件放置where 语句最后(创建的联合索引中,务必把访问涉及到的字段写在最后) sql 语句中where 顺序 并不影响mysql 优化策略的。 联合索引的顺序影响的。

is null 可以使用索引 is not null 不能使用索引
not like 页不能使用索引,导致全部扫描
<>,!= 不等于 不能使用索引
like % 开头 索引失效 stuname like ‘%123’ , 不建议 左模糊,全模糊
OR 前后存在非索引的列,索引失效
最后在设计数据表的时候将字段设置为 not null 约束,
比如你可以将int 类型的字段,默认值设置为0.
将字符类型的默认值设置为空字符串(‘’)

总结

index(a,b,c)
mysql 查询优化 、索引失效,mysql,adb,android
mysql 查询优化 、索引失效,mysql,adb,android文章来源地址https://www.toymoban.com/news/detail-695506.html

到了这里,关于mysql 查询优化 、索引失效的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mysql进阶优化篇02——索引失效的10种情况及原理

    前 言 🍉 作者简介:半旧518,长跑型选手,立志坚持写10年博客,专注于java后端 🍌 专栏简介:mysql基础、进阶,主要讲解mysql数据库sql刷题、进阶知识,包括索引、数据库调优、分库分表等 🌰 文章简介:本文将介绍索引失效的10种情况及原理,绝对不需要死记硬背,建议收

    2024年02月02日
    浏览(42)
  • MySQL索引优化与查询优化

    MySQL中提高性能的一个最有效的方式是对数据表设计合理的索引。索引提供了访问高效数据的方法,并且加快查询的速度,因此索引对查询的速度有着至关重要的影响。 使用索引可以快速地定位表中的某条记录,从而提高数据库查询的速度,提高数据库的性能。 如果查询时没

    2024年02月05日
    浏览(50)
  • 【MySQL高级篇笔记-索引优化与查询优化(中) 】

    此笔记为尚硅谷MySQL高级篇部分内容 目录 一、索引失效案例 二、关联查询优化 1、采用左外连接 2、采用内连接 3、join语句原理 1.驱动表和被驱动表 2.Simple Nested-Loop Join(简单嵌套循环连接) 3.Index Nested-Loop Join(索引嵌套循环连接) 4.Block Nested-Loop Join(块嵌套循环连接) 5.Join小结

    2024年02月08日
    浏览(47)
  • MySQL查询优化方案汇总(索引相关)

    类型隐式转换 大坑 大数据深度分页,用主键 避免使用MySQL函数 避免类型的隐式转换 避免使用函数或表达式,尽量只让数据库做纯粹的增删改查。 避免使用不等值做排除法 避免使用null值 减少大字段查询,避免使用*,不说磁盘io的损耗,连网络带宽都跟着损耗。 如果只sel

    2024年03月09日
    浏览(49)
  • MySQL查询性能优化——索引分类(二)

    目录 一、索引分类   1.按存储引擎存储形式分类     1.1聚集索引    1.1.1聚集索引结构   1.2 二级索引  1.2.1二级索引结构 2.按数据库分类  2.1 主键索引   2.2 唯一索引  2.3 常规索引  2.4 联合索引  2.5 全文索引 上一期说到索引的原理其实就是B+树,这期我们来聊一下索引的

    2024年01月22日
    浏览(45)
  • mysql高级三:sql性能优化+索引优化+慢查询日志

    内容介绍 单表索引失效案例 0 、思考题: 如果把 100 万数据插入 MYSQL ,如何提高插入效率 (1)关闭自动提交,只手动提交一次 (2)删除除主键索引外其他索引 (3)拼写mysql可以执行的长sql,批量插入数据 (4)使用java多线程 (5)使用框架,设置属性,实现批量插入 1、

    2024年02月12日
    浏览(72)
  • MySQL索引优化:提升查询速度的实战解析

    当涉及到大型数据库和复杂查询时,索引在MySQL中是一个重要的性能优化工具。通过使用索引,可以加速查询速度,减少查询的执行时间。下面是一个详细的MySQL添加索引的教程,使用Markdown格式进行说明。 步骤1:选择合适的列 首先,需要选择哪些列需要添加索引。通常情况

    2024年02月12日
    浏览(67)
  • MySQL数据库索引优化指南:提升查询效率的利器

    本文将详细探讨MySQL数据库索引的概念、作用以及不同类型的索引,包括主键索引、唯一索引和普通索引。通过实际案例分析,我们将深入理解索引的工作原理,并提供实用的优化建议,帮助读者提升数据库性能。

    2024年02月09日
    浏览(91)
  • 深入解析MySQL视图、索引、数据导入导出:优化查询和提高效率

    目录 1. 视图(View): 什么是视图? 为什么要使用视图? 视图的优缺点 1) 定制用户数据,聚焦特定的数据 2) 简化数据操作 3) 提高数据的安全性 4) 共享所需数据 5) 更改数据格式 6) 重用 SQL 语句 示例操作 没使用前 使用后 2. 索引(Index): 什么是索引? 为什么要使用索引?

    2024年02月13日
    浏览(64)
  • like模糊查询导致索引失效的解决方案

    我们在使用like 通配符有下面三种用法,其中第1和第2的用法会引起索引失效的问题。这是因为MySQL的索引是按照从左到右的顺序进行匹配的,而前导通配符(比如%abc)会导致无法按照索引顺序进行匹配。 1、like \\\'%name\\\'   —— 失效 2、like \\\'%name%\\\'  —— 失效 3、like \\\'name%\\\' 现在来

    2024年02月11日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包