关于数据库索引问题的学习记录

今天去面试,被问到了数据库索引的问题。而我的第一反应竟然是不知道,真的是罪过罪过,回来之后立马恶补了一下相关的知识。摔倒可以,但是一个地方决不能摔倒两次,每次的打击,都要变得有意义!!

附带学习技能:数据库开启缓存

1.首先查看缓存是否开启,命令:show variables like "%query_cache%"; 可以查看一些情况,如下图

一般默认是不会开启的,也就是  query_cache_type 的状态是OFF,开启缓存,有两种模式。

第一种:配置文件方式修改,Windows系统,找到mysql的安装位置,找到my.ini文件,将 query_cache_type=0 改为 query_cache_type=1。如果没有,就加上后面这句。然后需要重新启动mysql,就可以了。Windows中重启mysql的方法需要两个步骤:关闭,启动(因为Windows没有直接重启的命令)。关闭:net stop mysql;重启:net start mysql。注意,这里针对 mysql 的操作,需要管理员身份运行的dos窗口,一般身份的窗口,会报错。具体如何管理员身份运行,这个百度经验里有具体说明  https://jingyan.baidu.com/article/ceb9fb10b53ab88cac2ba05b.html   。

第二种:命令行直接修改。我一开始是在普通的dos窗口下运行msyql的,一直奇怪,为什么我命令行修改一直不成功。后来就用修改配置文件的方法修改,关闭启动msyql服务时,需要管理员身份运行的dos窗口。后来想到,如果在管理员身份运行的dos窗口里登录mysql,再在mysql的命令行里输入命令,会不会就可以了呢?结果还真是这样,具体界面,如下截图:

可以看到,下面的命令:set global query_cache_type = 0 和 set global query_cache_type = 1 是可以执行生效的。而如果用普通的身份运行的dos窗口,执行上面的命令的话,就会报错,如下图:

开始进入正文,数据库索引

数据库索引,是一个可以提高查询速度的有效的方法。索引对于用户来说是不可见的,首先看一下索引的创建语句 create index (索引名) on 表名(列名);这样,就可以在一张表内,针对一列,创建索引。创建索引前和创建索引后,查询速度会有很大的提升,下面是我做的一个小实验,还是可以感受到查询速度的明显提升的:

但是,凡事都有两面性,索引也有不好的地方,那就是,如果创建索引,那么针对表的插入或者更新操作,开销就会比往常大,因为每次只要有索引字段的改动,数据表都会重新计算索引,所以,如何选择,还是需要看具体的业务如何。

先写到这,后面补充关于原理性、关于数据结构底层的学习。

猜你喜欢

转载自blog.csdn.net/weixin_41401929/article/details/81292976