`

Mysql索引优化教程

阅读更多
索引的存储分类

myisam表的数据文件和索引文件是自动分开的;innodb的数据和索引是存储在同一个表空间里面,但可以有多个文件组成。 创建索引语法如下:
    CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
    [USING index_type]
    ON tbl_name (index_col_name,...)
    index_col_name:
    col_name [(length)] [ASC | DESC]

索引的存储类型目前只有两种(btree和hash),具体和表的模式相关:
    myisam     btree
    innodb      btree
    memory/heap hash,btree

mysql目前不支持函数索引,只能对列的前一部分(length)进行索引,例:
    create index ind_test on table1(name(5)),
对于char和varchar列,使用前缀索引将大大节省空间。
MySQL如何使用索引

索引用于快速找出在某个列中有一特定值的行。对相关列使用索引是提高SELECT操作性能的最佳途径。
查询要使用索引最主要的条件是查询条件中需要使用索引关键字,如果是多列索引,那么只有查询条件使用了多列关键字最左边的前缀时,才可以使用索引,否则将不能使用索引。

下列情况下,Mysql不会使用已有的索引:
1.如果mysql估计使用索引比全表扫描更慢,则不使用索引。例如:如果key_part1均匀分布在1和100之间,下列查询中使用索引就不是很好:
    SELECT * FROM table_name where key_part1 > 1 and key_part1 < 90
2.如果使用heap表并且where条件中不用=索引列,其他> 、<、 >=、 <=均不使用索引;
3.如果不是索引列的第一部分;
4.如果like是以%开始;
5.对where后边条件为字符串的一定要加引号,字符串如果为数字mysql会自动转为字符串,但是不使用索引。
查看索引使用情况

如果索引正在工作,Handler_read_key的值将很高,这个值代表了一个行被索引值读的次数,很低的值表明增加索引得到的性能改善不高,因为索引并不经常使用。

Handler_read_rnd_next的值高则意味着查询运行低效,并且应该建立索引补救。这个值的含义是在数据文件中读下一行的请求数。如果你正进行大量的表扫描,该值较高。通常说明表索引不正确或写入的查询没有利用索引。语法:
    mysql> show status like 'Handler_read%';
分享到:
评论

相关推荐

    mysql性能优化教程.pdf (by caoz)

    - **目的**:厦门游家公司(4399.com)为了提升员工技能水平,制定了这份MySQL性能优化教程,旨在为已有一定MySQL使用经验的工程师提供实战指导。 - **适用场景**:主要针对高并发、大数据量的互联网应用环境,强调...

    Mysql性能优化教程

    本教程将深入探讨MySQL性能优化的各个方面,帮助你理解并实践有效的优化策略。 首先,我们来了解**Mysql执行优化**。MySQL的执行优化主要涉及查询计划的选择、索引的使用以及SQL语句的优化。在数据库操作中,SQL...

    caoz的mysql性能优化教程

    MySQL性能优化是数据库管理员和...通过学习caoz的MySQL性能优化教程,你将掌握一系列实用技巧,使你的MySQL数据库达到最佳运行状态,满足业务需求,降低运维成本。无论是初学者还是经验丰富的DBA,都能从中获益匪浅。

    Mysql性能优化教程.doc

    ### MySQL性能优化教程知识点概述 #### 一、MySQL执行优化 **1.1 背景及目标** - **背景**: 针对已具备一定MySQL使用经验的工程师,特别是适用于高并发、海量数据处理的互联网环境。 - **目标**: 通过对MySQL性能...

    mysql性能优化教程

    MySQL性能优化教程旨在帮助数据库管理员和开发者提升MySQL数据库的运行效率,减少查询延迟,提高系统整体性能。在本文中,我们将深入探讨MySQL的执行优化、数据索引的理解以及执行状态的解析。 首先,MySQL执行优化...

    MYSQL索引和优化详细说明教程

    MySQL索引和优化是数据库管理中的关键环节,它直接影响到数据查询的速度和效率。本教程将详细介绍MySQL中的索引类型及其优化策略。 首先,我们需要理解什么是索引。索引是数据库为了快速查找特定记录而创建的一种...

    Mysql_性能优化教程

    ### MySQL性能优化教程知识点梳理 #### 一、MySQL执行优化 **1.1 背景及目标** - **目标人群**: 已经具备一定的MySQL使用经验的技术人员。 - **适用场景**: 高并发和大数据量的互联网环境。 - **语言风格**: 口语...

    mysql高级视频教程百度云(2019).txt

    45.MySQL高级_索引优化答疑补充和总结口诀.avi 44.MySQL高级_索引面试题分析.avi 43.MySQL高级_索引优化10.avi 42.MySQL高级_索引优化9.avi 41.MySQL高级_索引优化8.avi 40.MySQL高级_索引优化7.avi 39...

    MySQL数据库优化SQL篇PPT课件.pptx

    例如,使用索引、优化数据库结构、使用缓存等。这些技巧可以帮助我们提高数据库的性能和效率。 本PPT课件对MySQL数据库优化的重要知识点进行了详细的讲解,并提供了许多实用的优化技巧和方法。通过学习本PPT课件,...

    mysql 优化教程

    ### MySQL优化教程 #### 一、数据库设计要合理 在MySQL优化过程中,合理的数据库设计是基础,也是最为关键的一环。良好的设计不仅能够提高查询效率,还能减少存储空间的需求。 - **规范化**:通过规范化避免数据...

    MySQL架构执行与SQL性能优化 MySQL高并发详解 MySQL数据库优化训练营四期课程

    课程内容进行了精华的浓缩,有四大内容主旨,MySQL架构与执行流程,MySQL索引原理详解,MySQL事务原理与事务并发,MySQL性能优化总结与MySQL配置优化。课程安排的学习的教程与对应的学习课件,详细的学习笔以及课程...

    2021年MySQL高级教程视频.rar

    09.MySQL高级索引索引分类.avi 10.MySQL高级索引索引语法.avi 11.MySQL高级索引索引设计原则.avi 12.MySQL高级视图概述.avi 13.MySQL高级视图创建及修改视图.avi 14.MySQL高级视图查看及删除视图.avi 15.MySQL高级...

    大牛-高级教程MySQL性能优化实战

    1. **索引优化**:索引是提高查询速度的关键。了解如何创建和设计有效的索引,包括主键、唯一键和非唯一键,以及何时使用B-Tree、Hash或全文索引。合理使用复合索引,避免全表扫描,可以大幅提高查询效率。 2. **...

    韩顺平-Mysql优化系列视频教程(19讲)

    韩顺平-Mysql优化系列视频教程(19讲)课程目录:【】Mysql优化01 关键技术【】Mysql优化02 表的设计【】Mysql优化03 慢查询(一)【】Mysql优化04 慢查询(二)【】Mysql优化05 慢查询(三)【】Mysql优化06 索引(一)【】...

Global site tag (gtag.js) - Google Analytics