优点

有了索引.对于记录数量很多的表,可以提高查询速度.

缺点

索引是占用空间的.

索引会影响update insert delete速度

ALERT!!!

1    索引要创建在where和join用到的字段上.

2    以下操作符号可以应用索引

:,>=,BETWEEN,IN,LIKE不以%_开头

以下需要注意不使用索引

<>, NOT IN, LIKE %_开头

<> 可以用 a>1 or a<3 代替,NOT IN 可以用NOT exists代替

3    在使用max() min()时最好加上索引.

4    单索引要创建在确实需要的地方.

多列索引 有最佳左前缀特性 所以尽量左边的字段是最常用的.

5

索引不会包括有NULL值,就是有NULL,索引就失效

6

使用短索引,一个字段字太多,可以建立部分索引,只取前十个字.节约空间.

7

不要在列上运算.例如:where MD5(“password”) = “myz”

8

explain select * from myz 来测试一下语句的效率…

输入 explain select * from customer; 后,出现一张表,个行的意思如下:

table-显示此行数据属于哪张表;

type-重要的一列,显示使用了何种连接,从好到差依次为const、eq_ref、ref、range、index、all;possible_keys-可以应用在这张表中的索引,如果为null,则表示没有可用索引;key-实际使用的索引,如为null,表示没有用到索引;key_len-索引的长度,在不损失精确度的情况下,越短越好;ref-显示索引的哪一列被使用了,如果可能的话,是个常数;rows-返回请求数据的行数;extra-关于mysql如何解析查询的额外信息,下面会详细说明。

type的描述:

system-表只有一行,这是const连接类型的特例;const-表中一个记录的最大值能够匹配这个查询(索引可以是主键或唯一索引)。因为只有一行,这个值实际就是常数,因为mysql先读这个值,再把它当作常数对待;eq_ref-从前面的表中,对每一个记录的联合都从表中读取一个记录。在查询使用索引为主键或唯一索引的全部时使用;ref-只有使用了不是主键或唯一索引的部分时发生。对于前面表的每一行联合,全部记录都将从表中读出,这个连接类型严重依赖索引匹配记录的多少-越少越好;range-使用索引返回一个范围中的行,比如使用>或

extra行的描述:

distinct-mysql找到了域行联合匹配的行,就不再搜索了;

not exists-mysql优化了left join,一旦找到了匹配left join的行,就不再搜索了;

range checked for each-没找到理想的索引,一次对于从前面表中来的每一个行组合;

record(index map: #)-检查使用哪个索引,并用它从表中返回行,这是使用索引最慢的一种;

using filesort-看到这个就需要优化查询了,mysql需要额外的步骤来发现如何对返回的行排序。他根据连接类型以及存储排序键值和匹配条件的全部行的行指针来排序全部行。

using index-列数据是从单单使用了索引中的信息而没有读取实际行的表返回的,这发生在对表的全部的请求列都是同一个索引时;

using temporary-看到这个就需要优化查询了,mysql需要创建一个临时表来查询存储结果,这通常发生在多不同的列表进行order by时,而不是group by;

where used-使用了where从句来限制哪些行将与下一张表匹配或是返回给用户。如不想返回表中用的全部行,并连接类型是all或index,这就会发生,也可能是查询有问题。

9

查看索引信息

show index from tablename;

觉得文章有用?立即:

和朋友一起 共学习 共进步!

猜您喜欢

mysql索引结构优缺点_mysql索引优缺点及注意事项相关推荐

  1. mysql索引数据结构图解_MySQL索引底层结构与实现原理

    为什么要使用索引 MySQL官方定义为:索引(Index)是帮助 MySQL 高效获取数据的数据结构,类似于书的目录结构一样. 如果向mysql发出一条sql语句请求,查询的字段没有创建索引的话,可能 ...

  2. mysql索引底层图_MySQL索引底层数据结构

    一.何为索引? 1.索引是帮助数据库高效获取数据的排好序的数据结构. 2.索引存储在文件中. 3.索引建多了会影响增删改效率.(一张表最多允许建16个索引) (下面这张图为计算机组成原理内容,每查询一 ...

  3. mysql索引有几种使用索引的好处_mysql索引的类型和优缺点

    mysql索引的类型和优缺点 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针. 注:[1]索引不是万能的!索引可以加快数据检索操作,但 ...

  4. mysql 联合主键优缺点_mysql索引的类型和优缺点

    mysql索引的类型和优缺点 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针. 注:[1]索引不是万能的!索引可以加快数据检索操作,但 ...

  5. mysql索引类型 优劣_Mysql索引的类型和优缺点详解

    索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针. 注: [1]索引不是万能的!索引可以加快数据检索操作,但会使数据修改操作变慢.每修改 ...

  6. mysql函数和索引冲突问题_Mysql索引常见问题汇总

    Q1:数据库有哪些索引?优缺点是什么? 1.B树索引:大多数数据库采用的索引(innoDB采用的是b+树).能够加快访问数据的速度,尤其是范围数据的查找非常快.缺点是只能从索引的最左列开始查找,也不能 ...

  7. 19.Mysql索引结构及常见索引的区别

    转载出:http://blog.csdn.net/qq_19557947/article/details/76951912 一.Mysql索引主要有两种结构:B+Tree索引和Hash索引 Hash索 ...

  8. mysql两种索引结构_19.Mysql索引结构及常见索引的区别

    转载出:http://blog.csdn.net/qq_19557947/article/details/76951912 一.Mysql索引主要有两种结构:B+Tree索引和Hash索引 Hash索 ...

  9. mysql设置索引树长度_MySQL索引-B+树

    索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据. 索引最形象的比喻就是图书的目录了.注意这里的大量,数据量大了索引才显得有意义,如果我想要在 [1,2,3,4] 中找到 4 ...

最新文章

  1. JavaScript原型学习
  2. [问答题] 考SQL语句的题,题太长了,实在不好回忆了。
  3. JUC系列(五)| Synchonized关键字进一步理解
  4. JS弹出窗口的运用与技巧(转)
  5. 设计模式 抽象工厂模式(Abstract Factory)
  6. Django之创建应用以及配置路由
  7. html页面内分栏显示不全,怎么消除Word文档分栏后栏间不平衡现象
  8. Python机器学习:梯度下降法002模拟实现梯度下降法
  9. 为数据库重新生成log文件
  10. flask-uploads文件上传
  11. php拼音首拼,php 实现 汉字转拼音
  12. 冲浪涨停预警,让你快速跟上涨停板,主力主升浪趋势,通达信选涨停股选股公式
  13. 基于R语言的量表网络分析笔记
  14. wine - qq无法显示图片头像
  15. intel服务器无线网卡,刷版本号?Intel再发新版无线网卡驱动
  16. python智能抠图
  17. 基于OTSU最大类间方差法的ROI分割、提取图像中的形状特征--面积、周长、离心率、zernike矩
  18. 主要是web开发和android开发 最好是选择一个方向先专一去学, 半瓶子醋什么都想学你会发现到最后什么都不会,或者比别人多花出了太多的精力 我曾经学java的时候好高骛远,因为当时老师是一个c+
  19. 软件开发常用工具介绍
  20. 聊聊我的英语学习经验

热门文章

  1. 二级c语言加油,二级C语言 备考指南及常见问题(2013版)
  2. 语言之输出png图片_什么是PPML?如何输出PPML文档?
  3. eclipse配置python开发环境_eclipse怎样搭建Python开发环境
  4. java框架异常怎么处理_java异常处理与处理框架-笔记
  5. 一个事物两个方面的对比举例_顶管施工也有讲究,两个方面一个个来
  6. range函数python_range()函数以及Python中的示例
  7. Android的引用jar包
  8. 不同网段通过静态路由实现互通(强烈推荐)
  9. Ray.tune可视化调整超参数Tensorflow 2.0
  10. 灰度值怎么降级_微服务生态的灰度发布如何实现?