设为首页 加入收藏

TOP

SQL优化 MySQL版 - 索引分类、创建方式、删除索引、查看索引、SQL性能问题
2019-03-09 00:20:45 】 浏览:49
Tags:SQL 优化 MySQL 索引 分类 创建 方式 删除 查看 性能 问题

的意思就是单列的值,比如说有一张数据库表,表内有三个字段,分别是 id name age,我给age这个字段加一个索引,这就是单值索引,因为只有age这一列是索引;


一个表可以有多个单值索引,我不光可以设置age,我也可以吧name设置成索引,或许更多


顾名思义,就是不能重复,比如age就不能被设置为唯一索引,因为年龄肯定是不唯一的,小明18岁,有可能小李也是18岁,这就重复了,所以age这一列不能被设置成唯一索引;


一般唯一索引就是Id;


由多个列构成,相当于书的二级目录,比如我找“赵”这个字,它就先去Z里面找,然后再去zhao里面去找,找两次;


这个时候我把name跟age它两个共同组成一个复合索引,意思就是,我先根据name找人,如果名字重复了,我再根据age去找;


复合索引不一定必须两个列在一起使用,比如找李四,这个表里面就一个李四,就没有必要再去找age进行筛选;


语法:careate 索引类型 索引名 on 表 (字段)//你现在在给那张表的那个字段加索引


单值索引索引类型就是index;


careate index dept_index on tb(dept)


careate  unique index name_index on tb (name)


careate  index dept_name_index on tb tb(dept,name);//程序会自动检测,如果你后面参数只有一个,那就判定你为单值,如果是一个以上,就判定你是复合!


语法:alter table 表名 索引类型 索引名(字段)<

/p>

alter table tb add index dept_index(dept);


alter table tb add unique index name_index(name)


 


alter table tb add index dept_name_index(dept,name)


值得注意的是,两个创建方式的效果是一样的,任选其一,均不需要事物的提交(commit),因为两者都是DDL语句,程序遇到DDL会自动提交,但是你写了也不报错,就是什么也没提交而已;


事物只对DML语句进行操作,也就是增删改操作,这个需要理解!


注意:


如果一个字段是primary key(主键),则该字段默认就是主键索引,即便你没有给他加索引,他也是主键索引!


主键索引与唯一索引基本相似,区别就是,值不能为Null,而唯一索引可以!


主键索引:值不能重复 值不能为null


唯一索引:值不能重复 值可以为null


语法:drop index 索引名 on 表名;


drop index name_index on tb;


语法:show index from tb;


1.分析SQSL的执行计划


通过explain,可以模拟SQL优化器执行SQL语句,从而让开发人员知道自己编写的状况;


查询执行计划:explain+SQL语句;


举例:explain select * From bbs_detail,看一下执行结果:



我会在下篇文章详细介绍并且实战优化,在这里各位仅做了解即可;


2.MySQL查询优化器会干扰我们的优化


我在前几章说过有关为什么会干扰我们优化好的SQL语句,因为它内置有一个优化器,它会擅自篡改我们优化好的SQL语句;



编程开发网
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇SQL优化 MySQL版 -分析explain SQ.. 下一篇线上MySQL备份实例

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(217) }