MySQL之 索引 和 存储过程
Posted wdmlsx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL之 索引 和 存储过程相关的知识,希望对你有一定的参考价值。
前言:
一:什么是索引
索引是相对于数据可以表的列来说的
每一个表都有自己的字段和表数据,字段对应 列而表数据就对应着表中一行一行的数据
索引会改变这个字段的
所有的mysql列类型都可以被索引,也就说可以给表的任意字段设置索引
大大加快了数据查询的速度
创建索引要耗费时间,并随着数据量的增加所耗费非时间也会增加
索引也需要占空间,我们知道数据表中的数据也会有最大的上限设置的,如果我们有大量创建索引,索引文件可能会比数据文件更快达到上线值
当对表中的数据进行增加、修改、删除时,索引也需要动态维护,降低了数据维护速度
用新华字典查汉子
我们拿到一个不认识的汉子,想要知道它是什么意思。怎么读
确定它有没有偏旁部首,没有的话直接数一下它有多少笔画
有偏旁部首的话,数一下它的偏旁有多少化
通过数字,我们找到它的偏旁部首在哪一页
在哪找到那一夜然后开始找这个汉子就可以了
如果没有偏旁部首的话 我们需要从第一页开始寻找直到找到它为止
很显然这样的速度非常的慢
如果有了掐面的索引目录 则会大大减少我们查询的时间
字典有成千上万个汉子,在没有索引目录的情况下,我们想找到一个字需要花费大量的时间
但是通过索引目录,则大大减少了我们的查询时间,大大的提高了工作效率
偏旁部首的笔画 偏旁部首字符 以及它除去偏旁部首的部分 就可以就可以在字典里唯一确定这个汉字了
然后我们直接去找它的位置就可以了
数据库中的索引的概念和这个比较类似
通过给表的某个字段的所有的值都设置索引
当我们想要知道它在哪儿
直接通过索引很快就能找到它的位置
否则数据库也会和我们一样从第一行开始检索,如果数据量特别大,这样的工作效率很显然是非常低的
至于数据库给字段建立索引的原理是什么,现在没精力去研究,只是知道索引的意思和目的就可以
--优点
理论上讲我们可以给表的任何字段创建索引(实际中肯定是不需要的)
大大加快了数据库对有索引字段的查询速度
--缺点
创建索引需要耗费时间
索引需要数据库去维护他,当我们改变表中的数据,(修改、新增、删除索引列)整个表的索引也会跟着修改,这就导致了我们添加、或修改时的速度会变慢
占内存 数据库要给索引分配内存,这个是非常耗费
--使用原则:
对数据经常变动的表,减少索引的数目
数据量小的表不必要建立索引
避免在重复值比较多的列,创建索引
经常出现在条件判断的字段建立索引
--索引分类
单列索引:
这样索引只是对于数据库表中的某一列起作用
唯一索引:
索引列中的值必须是唯一的,允许有空值
主键索引
组合索引
索引对应表字段中的若干列,
全文索引:
只有MyISAM引擎才可以使用,且只能在CHAR VARCHAR TEXT类型字段上使用索引
类似关键字查找
空间索引:
只有MyISAM引擎才可以使用
创建和删除索引:
以上是关于MySQL之 索引 和 存储过程的主要内容,如果未能解决你的问题,请参考以下文章