**

以%开头的LIKE查询不能够利用B-tree索引

**

explain select * from actor where last_name like '%NI%'G;

explain select * from actor where last_name like 'NI%'G;

解决办法
先扫描索引 last_name获取满足条件的%NI%的主键actor_id列表,之后根据主键回表去检索记录,这样访问避开了全表扫描actor表产生的大量IO请求。

explain select * from (select actor_id from actor where last_name like '%NI%') a,actor b where a.actor_id = b.actor_idG;

数据类型出现隐式转换

explain select * from actor where last_name=1G;

explain select * from actor where last_name='1'G;

复合索引的情况下,查询条件不满足索引最左的原则

explain select * from payment where amount=3.98 and last_update='2016-02-15 22:12:32'G;

Mysql估计使用索引比全表扫描慢

update film_text set title =concat('S',title);

explain select * from film_text where title like 'S%'G;

可以看出全表扫描需要访问的记录rows为1000,代价cost计算为233.53;

通过idx_title_desc_part索引扫描访问记录rows为998,代价cost为1198.6 要高于全表扫描的时间,mysql会选择全表扫描

用or分割开的条件,or前条件有索引,or后的列没有索引

用or分割开的条件,or前条件有索引,or后的列没有索引,那么涉及的索引不会被用到

因为or后面的条件没有索引,那么后面的查询肯定要进行全表扫描,在存在全表扫描的情况下,就没有必要多一次索引扫描增加IO访问。

explain select * from payment where customer_id =203 or amount=3.96G;

**

负向查询(not , not in, not like, <>, != ,!>,!< ) 不会使用索引

**

**

独立的列 索引 不能是表达式的一部分

**

select * from xxxx where id+1;

mysql 存在索引但不能使用索引的典型场景相关推荐

  1. MySQL 学习笔记(18)— 索引的分类、创建、查看、删除等

    1. 索引类型 1.1 唯一索引与非唯一索引 唯一索引( UNIQUE )中的索引值必须唯一,可以确保被索引的数据不会重复,从而实现数据的唯一性约束. 非唯一索引允许被索引的字段存在重复值,仅仅用于提 ...

  2. mysql更新索引不影响业务_mysql索引更新要多久

    MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是 ...

  3. 一句话说清聚集索引和非聚集索引以及MySQL的InnoDB和MyISAM

    聚集索引和非聚集索引以及MySQL的InnoDB和MyISAM经常遇到有人向我咨询这个问题,其实呢,网上帖子很多,也说的都对,但是呢,看客可不一定是真的理解了.所以今天在这里用最简短的语言让你明白这些 ...

  4. mysql单列索引和多列索引_mysql索引类型 normal, unique, full text

    问题1:mysql索引类型normal,unique,full text的区别是什么? normal:表示普通索引 unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用 ...

  5. mysql在线上建索引,mysql 5.6在线DDL建索引测试

    基本信息: mysql版本: (product)root@localhost [(none)]> select @@version; +------------+ | @@version  | ...

  6. mysql 索引 二叉树_MySQL 的索引,为什么是 B+而不是平衡二叉树

    数据库为什么使用 B+ 树? 前言 讲到索引,第一反应肯定是能提高查询效率.例如书的目录,想要查找某一章节,会先从目录中定位.如果没有目录,那么就需要将所有内容都看一遍才能找到. 索引的设计对程序的性 ...

  7. Mysql InnoDB B+树索引和哈希索引的区别? MongoDB 为什么使用B-树?

    B-树和B+树最重要的一个区别就是B+树只有叶节点存放数据,其余节点用来索引,而B-树是每个索引节点都会有Data域. B+树 B+树是为磁盘及其他存储辅助设备而设计一种平衡查找树(不是二叉树).B+ ...

  8. mysql 唯一索引_MySQL学会用索引,让你数据库的查询速度起飞

    MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度.打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一 ...

  9. mysql 查询优化 非索引_mysql 查询优化和索引使用心得

    -- sql优化案例 -- 1.not in 用left join on 替换 -- 2.like '%XXX%' 用 like 'XXX%' 替换 -- 3.limit 优化 实用,在分页中 EXP ...

  10. mysql中groupby会用到索引吗_开发人员不得不知的MySQL索引和查询优化

    本文主要总结了工作中一些常用的操作及不合理的操作,在对慢查询进行优化时收集的一些有用的资料和信息,本文适合有 MySQL 基础的开发人员. 索引相关 索引基数 基数是数据列所包含的不同值的数量,例如, ...

最新文章

  1. 蓝桥杯“基础练习:特殊回文数
  2. 职场减压妙计:主动降职
  3. Android 系统镜像: boot.img kernel.img ramdisk.img system.img userdata.img cache.img recovery.img
  4. Strophe的示例程序运行
  5. android xml 未能解析文件,Android Studio中“无法解析符号R”
  6. Android系统常用的权限
  7. java中一级缓存二级缓存_[Java] hibernate 一级缓存和二级缓存
  8. android 下拉刷新listview,实现Android下拉刷新的ListView
  9. 7 netsnmp安装window_Linuxfx 10.2,一款来自巴西的Window操作系统,“山寨”出了高度...
  10. 内核调试技巧-逆向寻踪,揭开 LACP 协议流程的神秘面纱
  11. Nature子刊:中国学生读完大学后,批判性思维和学术技能出现全面下降
  12. 计算机网络基础知识及面试总结-这应该是最全的了
  13. 数理统计学类毕业论文文献都有哪些?
  14. 自动语音播报WinCC报警消息
  15. 企业管理软件如何选型?看完后恍然大悟
  16. “赋能开发者”高峰论坛暨西安葡萄城30周年庆典隆重举办
  17. 平安好房想灭房产中介靠不靠谱?
  18. 教程(一)官网下载Java JDK安装包
  19. 游戏特效详解!如何理解特效和判定一个特效的品质标准?
  20. 极米科技首发三款新品 宣布与百度成立AI无屏实验室丨Xtecher 前线

热门文章

  1. python中文读音ndarray-Python Numpy 控制台完全输出ndarray的实现
  2. python网上编程课程-什么是Python编程课程
  3. 这是我的第一个python程序怎么打-我的第一个Python程序
  4. 如何在Jupyter notebook中运行python的.py文件,以及ipynb文件与py文件的相互转化
  5. hdu2.1.2 How many prime numbers(计算素数的个数)
  6. LeetCode Nth Digit
  7. C++读写EXCEL文件方式比较 .
  8. C#——文件上传(一般处理程序ashx)
  9. Python 之 random模块
  10. js流程图:aworkflow.js