mysql索引
索引优化

1.什么是索引?
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。

2.作用是什么?
索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容,提高性能(查询速度)。

3.如何设置索引?
create [unique] index 索引名
on 表名称 (字段名[(长度)]);
//unique 唯一性 不允许具有索引值相同的行,从而禁止重复的索引或键值

4.删除索引
drop index 索引名 on 表名称;

5.索引和普通查询的区别?

比如,查询一个学校所有学生的成绩,将不及格的学生姓名和成绩显示下来。

普通查询方法:
select name,[成绩字段] from [表名] where [成绩字段]<60;

查询的过程:
数据库将所有学生的成绩全部查询一遍,将不及格的学生显示出来。
数据量小看不出区别,如果数据量达到百万,需要将所有学成全部查出,耗时非常大。

索引查询:
首先建立一个索引,create index 索引名 on 表名(成绩字段); 如果数据多,创建索引时会消耗大量时间,和内存。
再次查询select name,(成绩字段) from (表名) where 成绩字段<60;

查询过程:
索引将表中的数据排序,查询时列表有成绩10,30,60,70,100。
查询时,查到60的时候,将不再向后查询。节省时间。

普通索引(INDEX),主键索引(PRIMARY),全文索引()和唯一索引(UNIQUE)有什么区别?
唯一性索引:这种索引和“普通索引”基本相同,但有一个区别:索引列的所有值都只能出现一次,即必须唯一

补充:

索引是如何排序的?
数字索引:默认升序排序
文字索引:根据ASCII,汉字的机内码(不懂的问度娘)

多列索引:
查询条件是两条,多列索引比单列索引

创建索引:
1.经常需要搜索的列上,可以加快搜索的速度;
2.作为主键的列上,强制该列的唯一性和组织表中数据的排列结构;
3.经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度;
4.经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的;
5.经常需要排序的列上创 建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间;
6.经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。

索引的优缺点?
优点:
1.通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
2.可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
3.可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
4.在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
5.通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

缺点:
1.创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。
2.索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚集索引那么需要的空间就会更大。
3.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。

因为索引非常占内存,所以索引也需要谨慎添加,那些字段需要索引。

mysql索引 索引优缺点的更多相关文章

  1. MySQL存储引擎MyISAM和InnoDB,索引结构优缺点

    MySQL存储引擎MyISAM和InnoDB底层索引结构 深入理解MySQL索引底层数据结构与算法 (各种索引结构优缺点) Myisam和Innodb索引实现的不同(存储结构) 存储引擎作用于什么对象 ...

  2. MySQL索引失效及使用索引的优缺点

    本文所有实验基于MySQL5.7.21,实验将会用到Explain工具,不了解的同学可参考此文章:MySQL性能优化神器Explain详解 联合索引失效 先创建一个包含三个字段的联合索引,索引顺序如下 ...

  3. mysql_建立索引的优缺点 #转自Starzm#

    建立索引的优缺点: 为什么要创建索引呢? 这是因为,创建索引可以大大提高系统的性能.         第一.通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性.         第二.可以大大加 ...

  4. mysql高性能索引策略

    转载说明:http://www.nyankosama.com/2014/12/19/high-performance-index/ 1. 引言 随着互联网时代地到来,各种各样的基于互联网的应用和服务进 ...

  5. mysql InnoDB 索引小记

    0.索引结构 1).MyISAM与InnoDB索引结构比较,如下: 2).MyISAM的索引结构 主键索引和二级索引结构很像,叶子存储的都是索引以及数据存储的物理地址,其他节点存储的仅仅是索引信息.其 ...

  6. mysql之索引

    一.索引是什么? 比如我们要在字典中找某一字,如何才能快速找到呢?那就是通过字典的目录. 对数据库来说,索引的作用就是给‘数据’加目录. 二.索引算法 设有N条随机记录,不用索引,平均查找N/2次,那 ...

  7. 手把手教你mysql(十)索引

    手把手教你mysql(十)索引 一:索引的引入 索引定义:索引是由数据库表中一列或者多列组合而成,其作用是提高对表中数据的查询速度. 类似于图书的目录,方便快速定位,寻找指定的内容,如一本1000页的 ...

  8. BTREE与其它索引的优缺点对比

    数据库BTree索引.Hash索引.Bitmap位图索引的优缺点 (2016-01-05 17:13:40) 转载▼ 标签: 数据库 索引 mysql oracle 分类: IT http://www ...

  9. mysql数据库索引类型和原理

    索引初识: 最普通的情况,是为出现在where子句的字段建一个索引.为方便讲述,我们先建立一个如下的表. CREATE TABLE mytable ( id serial primary key, c ...

随机推荐

  1. Linux下memcached安装与连接

    前几天技术总监要我在项目中加一个memcached,以前也从来没有配置过,所以就去网上找教程,最终折腾成功.比较坑的就是sasl协议那里. 由于memcached依赖libevents,所以要下载两个 ...

  2. Android混淆

    一.为什么要混淆 为了避免apk在发布后被用户通过反编译拿到源代码和资源文件,然后修改资源和代码之后就变成一个新的apk.而经过混淆后的APK,即使被反编译,也难以阅读,注意混淆不是让apk不能阅读, ...

  3. 【Android Developers Training】 78. 序言:执行网络操作

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  4. Cornerstone.js使用相关

    官网地址:https://github.com/chafey/cornerstone 简介: Cornerstone is an open source project with a goal to ...

  5. JavaScript学习笔记(散)——继承、构造函数super

    构造函数中的super 今天看<JavaScript设计模式与开发实践>时,在书中看到一段代码出现super语句,第一次看到这个关键字,所以上网查了下它的作用,发现这个关键字是来自java ...

  6. python yield from 语法

    python yield from 语法 yield语法比较简单, 教程也很多 , yield from的中文讲解很少 , python官网是这样解释的 PEP 380 adds the yield ...

  7. 实现一个简单的Log框架

    实际上算不上框架,只是自己对日志框架的一点理解. 核心接口:Logger,供调用者完成不同等级的日志输出 package com.lichmama.log.service; public interf ...

  8. FZU 1015 土地划分

        Description 在Dukeswood这块土地上生活着一个富有的农庄主和他的几个孩子.在他临终时,他想把他的土地分给他的孩子.他有许多农场,每个农场都是一块矩形土地.他在农场地图上划上一 ...

  9. "HK"日常之制作一只QQ刷屏

    刷屏器是什么?可以吃吗?如果可以吃它好吃吗? um. 刷屏器就是可以定时发生信息的东西 刷屏器可以应用于很多方面,例如别人不理你了或者在QQ斗图的时候.警告:本教程仅作为学习研究,禁止其他用途!--- ...

  10. 新浪微博share分享接口请求奇葩错误

    17年6月30号,微博正式转入牛逼状态: 限制原来的微博发布删除等接口:(想用就开套餐,不然别说话) 开放新的分享接口share,然而,在调用这个分享接口时候,就会出现各种各样的奇葩错误: 注意事项: ...