MySQL之 索引 和 存储过程

Posted wdmlsx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL之 索引 和 存储过程相关的知识,希望对你有一定的参考价值。

前言:

 一:什么是索引

    索引是相对于数据可以表的列来说的

    每一个表都有自己的字段和表数据,字段对应 列而表数据就对应着表中一行一行的数据

    索引会改变这个字段的

所有的mysql列类型都可以被索引,也就说可以给表的任意字段设置索引

大大加快了数据查询的速度

 

创建索引要耗费时间,并随着数据量的增加所耗费非时间也会增加

索引也需要占空间,我们知道数据表中的数据也会有最大的上限设置的,如果我们有大量创建索引,索引文件可能会比数据文件更快达到上线值

当对表中的数据进行增加、修改、删除时,索引也需要动态维护,降低了数据维护速度

 

 

用新华字典查汉子

我们拿到一个不认识的汉子,想要知道它是什么意思。怎么读

确定它有没有偏旁部首,没有的话直接数一下它有多少笔画

有偏旁部首的话,数一下它的偏旁有多少化

通过数字,我们找到它的偏旁部首在哪一页

在哪找到那一夜然后开始找这个汉子就可以了

 

如果没有偏旁部首的话 我们需要从第一页开始寻找直到找到它为止

很显然这样的速度非常的慢

如果有了掐面的索引目录 则会大大减少我们查询的时间

 

字典有成千上万个汉子,在没有索引目录的情况下,我们想找到一个字需要花费大量的时间

但是通过索引目录,则大大减少了我们的查询时间,大大的提高了工作效率

 

偏旁部首的笔画  偏旁部首字符  以及它除去偏旁部首的部分 就可以就可以在字典里唯一确定这个汉字了

然后我们直接去找它的位置就可以了

 

数据库中的索引的概念和这个比较类似

 

通过给表的某个字段的所有的值都设置索引

当我们想要知道它在哪儿 

直接通过索引很快就能找到它的位置

否则数据库也会和我们一样从第一行开始检索,如果数据量特别大,这样的工作效率很显然是非常低的

 

至于数据库给字段建立索引的原理是什么,现在没精力去研究,只是知道索引的意思和目的就可以

 

--优点

  理论上讲我们可以给表的任何字段创建索引(实际中肯定是不需要的)

  大大加快了数据库对有索引字段的查询速度

--缺点

  创建索引需要耗费时间

  索引需要数据库去维护他,当我们改变表中的数据,(修改、新增、删除索引列)整个表的索引也会跟着修改,这就导致了我们添加、或修改时的速度会变慢

  占内存  数据库要给索引分配内存,这个是非常耗费

  

--使用原则:

  对数据经常变动的表,减少索引的数目

  数据量小的表不必要建立索引

  避免在重复值比较多的列,创建索引

  经常出现在条件判断的字段建立索引

 

 

 

--索引分类

  单列索引:

    这样索引只是对于数据库表中的某一列起作用

  唯一索引:

    索引列中的值必须是唯一的,允许有空值

  主键索引

    

组合索引

  索引对应表字段中的若干列,

全文索引:

  只有MyISAM引擎才可以使用,且只能在CHAR  VARCHAR  TEXT类型字段上使用索引

   类似关键字查找

空间索引:

  只有MyISAM引擎才可以使用

    

创建和删除索引:

  

 

以上是关于MySQL之 索引 和 存储过程的主要内容,如果未能解决你的问题,请参考以下文章

MySQL之事务以及存储过程

MySQL - 索引&视图&存储过程

MySQL数据库Day01-MySQL数据库基本概念

MySQL数据库Day01-数据库MySQL的基本概念

mysql 存储过程

MySQL之存储过程创建和调用