专栏首页L宝宝聊ITMysql性能优化——索引

Mysql性能优化——索引

对于没有索引的表,单表查询可能几十万数据就是瓶颈,而通常大型网站单日就可能会产生几十万甚至几百万的数据,没有索引查询会变的非常缓慢。

一、测试:创建一个tb1表,向表中插入20000行数据,如下图:

开始测试,查询stuname=’admin’的记录

(1)stuname列上没有创建索引的情况

注:explain可以查看执行计划

(2)stuname列上创建索引的情况

在查找stuname=‘admin’的记录时,如果stuname上已经建立了索引,mysql无须扫描全表,即准确可找到该记录。相反,mysql会扫描所有记录。所以在数据库表中,对字段建立索引可以大大提高查询速度。 索引是在存储引擎中实现的,而不是在服务器层中实现的。 所以并不是所有的存储引擎都支持所有的索引类型。

二、索引的分类

索引是帮助mysql高效获取数据的数据结构。它的存在形式是文件。索引能够帮助我们快速定位数据。好比是一本书的目录,能加快数据库的查询速度。

索引的数据结构(B-tree索引的结构):

1、使用索引产生的代价:

(1)索引本身是以文件的形式存放在硬盘的,所以添加索引会增加磁盘的开销。

(2)写数据,需要更新索引,对数据库是个很大的开销,降低表更新、添加和删除的速度。

2、索引的类型:

索引包括单列索引和组合索引。

单列索引:即一个索引只包含单个列,一个表可以有多个单列索引,但不是组合索引。

组合索引:即一个索引包含多个列。

(1)普通索引

是最基本的索引,没有任何限制

(2)唯一索引

索引列的值必须唯一,但允许空值,空值是指null。

(3)组合索引

:创建一个表,包含如下字段

建立这样的组合索引,相当于分别建立了下面三组组合索引:

Username,city,age username,city username

因为组合索引“最左前缀”的结果,所以没有city,age这样的结果。

例如以下sql就会用到组合索引

而下面的则不会用到:

注:我们在创建索引时应该将最常用作限制条件的列放在最左边,依次递减。

(4)全文索引

只用于MyISAM表对文本域进行索引。字段类型包括char、varchar、text

对于大容量的数据表,生成全文索引是一个非常消耗时间和硬盘空间的做法。

查看索引

本文分享自微信公众号 - L宝宝聊IT(gh_b0e552aa80db)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-08-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 索引、视图、存储过程和触发器的应用

    L宝宝聊IT
  • SQL server 数据库的索引和视图

    L宝宝聊IT
  • MySQL架构组成、逻辑模块组成

    Mysql逻辑结构可以看成是二层架构,第一层通常叫做SQL Layer,在mysql数据库系统处理底层数据之前的所有工作都在这一层完成的,包括权...

    L宝宝聊IT
  • Oracle初级索引学习总结

       索引是常见的数据库对象,建立索引的目的是为了提高记录的检索速度。它的设置好坏,使用是否得当,极大地影响数据库应用程序和Database的性能。虽然有许多资...

    aehyok
  • MySQL深入学习第五篇 - 深入浅出索引(下)

    在上一篇文章中,介绍了 InnoDB 索引的数据结构模型,今天我们再继续介绍一下 MySQL 索引有关的概念。

    越陌度阡
  • MySQL的干货你了解吗?

    想进大厂,mysql不会那可不行,来接受mysql面试挑战吧,看看你能坚持到哪里?

    故里
  • 高性能MySQL第五章 读书笔记

    用户7962184
  • 看了这篇MySQL,开发功力又升级

    大家好,我是小菜,一个渴望在互联网行业做到蔡不菜的小菜。可柔可刚,点赞则柔,白嫖则刚! 死鬼~看完记得给我来个三连哦!

    蔡不菜丶
  • MySQL系列 | 索引数据结构大全

    对于二叉树而言,每个节点只能有两个子节点,如果是一颗单边二叉树,查询某个节点的次数与节点所处的高度相同,时间复杂度为 O(n);如果是一颗平衡二叉树,查找效率高...

    Tinywan
  • MySql学习笔记(二)- 索引的设计和使用

    作为开发人员,数据库的索引是我们再熟悉不过的了。那么实话真的会了吗,在项目开发中随便定义一个int、varchar后边跟个primary key或者加个inde...

    程序员_备忘录

扫码关注云+社区

领取腾讯云代金券