当前位置: 首页 > news >正文

索引的情况

select * from A left join B on A.c = B.c where A.employee_id = 3

1.一句sql中 是可能走多次索引的,具体的 一般 表连接 ,或者说生成临时表的时候,会走索引 然后条件过滤的时候也会走索引,具体的 还是要具体分析

2.表连接 字段 一定要加索引,过程是,一次全表扫描,然后 拿着这张表的值,去走另外一张表的索引,

3.where 后面 or 少用,or 可能会全表扫描,union比较好,

4.复合索引顺序,不一定和 sql字段顺序 一致
例如 上面这句
结合上面的Mysql优化可知,
这一句Sql在执行的时候首先是选择了使用 表B 的索引来进行优化,
将表A单独放出来进行后续的操作,
然后,又发现了where语句中A.employee_id有一个聚合索引,
并且employee_id处于索引头,所以这个聚合索引是可用的,
so自然使用了此索引

5.表连接 建好索引后 一定会留 下一个 全表扫描的,然后 后面的 where 可以和 前面的 表连接字段关联索引 也可以单独建立,都是会走 索引的,只是 不是我们想的,表关联 后 得到 临时表,然后
where 字段 走 索引 ,得到的值,回表 回到 临时表(回表 不可能 回到 临时表的),可能是 例如 A B

mysql优化器,选择 A.a 作为 索引列,B.a 不走,然后 如果这时 有 B.a = xxx 这个条件,那么可能 B走全表前,先 索引一下 得到 剩下的记录,然后 剩下的 记录 和 B走索引

所以我们考虑的是,把 A表的 关联字段 和 A表的 条件字段 一起建索引,往往效果更好
当然,单独键 where 后面的 索引 也是 可以的

6.order by 后面的 可以 和 where 一起建立 联合索引,但是不一定用的到,会走联合索引,但是 order by 字段的 索引没有走

http://www.lryc.cn/news/15641.html

相关文章:

  • Verilog 学习第五节(串口发送部分)
  • 破解遗留系统快速重构的5步心法(附实例)
  • 信号量(上)实验
  • 阿里5年,一个女工对软件测试的理解
  • 前端练习项目
  • sql复习(set运算符、高级子查询)
  • 整车电源的几种模式:OFF/ACC/RUN/CRANK
  • 踩了大坑:wordpress后台 无法将上传的文件移动至wp-content
  • page cache设计及实现
  • 使用seata来解决分布式事务
  • 推荐一款新的自动化测试框架:DrissionPage
  • MQ系列面试
  • 一句话设计模式2:原型模式
  • c++11特性与c++17特性
  • Redis02: Redis基础命令
  • MDK的HardFault硬件异常和NMI异常原因总结
  • 视频图像质量诊断
  • make、Makefile项目自动化构建工具
  • Linux系统之Uboot、Kernel、Busybox思考之一
  • CCNP350-401学习笔记(401-450题)
  • 一文带你看透前端世界里的日期时间,对就是Date
  • 易基因|RRBS单碱基绘制580种动物的基因组规模DNA甲基化谱:Nature子刊
  • 面试官:能用JavaScript手写一个bind函数吗
  • 美国拟发布纽扣电池或硬币电池安全标准和通知要求ANSI C18. 3M
  • 双因素方差分析
  • [ vulhub漏洞复现篇 ] Drupal XSS漏洞 (CVE-2019-6341)
  • 「TCG 规范解读」第8章 TPM工作组 TPM 1.2中 SHA1的使用
  • 熵权法计算权重
  • redis实现用户签到,统计活跃用户,用户在线状态,用户留存率
  • MySQL中有多少种索引?索引的底层实现原理