加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

MySQL知识体系——索引

发布时间:2019-04-11 13:49:14 所属栏目:编程 来源:佚名杨彬Lennon
导读:本文直切主题,针对InnoDB引擎描写索引及优化计策。在开始之前,必要读者相识:1)二叉查找树(包罗2-3查找树、红黑树等数据布局)2)MySQL的InnoDB引擎基本常识 索引初探 要相识索引,虽然要相识其数据布局。树有许多应用,风行的用法之一是包罗UNIX和DOS

MySQL可以行使索引来扫描人 zipcode='95054'。第二部门(lastname LIKE '%etrunia%')不能用于限定必需扫描的行数,因此假如没有Index Condition Pushdown,此查询必需为全部拥有的人检索完备的表行 zipcode='95054'。

行使索引前提下推,MySQL lastname LIKE '%etrunia%'在读取整个表行之前搜查该 部门。这样可以停止读取与索引元组相对应的完备行,这些行匹配 zipcode前提而不是 lastname前提。

默认环境下启用索引前提下推。可以optimizer_switch通过配置index_condition_pushdown符号来节制 体系变量 :   

  1. SET optimizer_switch = 'index_condition_pushdown=off';  
  2.      SET optimizer_switch = 'index_condition_pushdown=on'; 

实践

*留意语句中的“[ ··· ]”中括号指代变量,誊写时记得去掉

平凡索引

这是最根基的索引,它没有任何限定。它有以下几种建设方法:

1. 建设索引

  1. CREATE INDEX indexName ON mytable(username(length)); 

假如不是字符范例的字段,如int,则不要指定length;假如是CHAR,VARCHAR范例,length可以不指定,也可以小于字段现实长度;假如是BLOB和TEXT范例,必需指定 length。

2. 修改表布局(添加索引)

  1. ALTER table tableName ADD INDEX indexName(columnName) 

3. 建设表的时辰直接指定

  1. CREATE TABLE mytable(     
  2. ID INT NOT NULL,      
  3. username VARCHAR(16) NOT NULL,    
  4. INDEX [indexName] (username(length))     
  5. ); 

独一索引

它与前面的平凡索引相同,差异的就是:索引列的值必需独一,但应承有空值。假如是组合索引,则列值的组合必需独一。它有以下几种建设方法:

1. 建设索引

  1. CREATE UNIQUE INDEX indexName ON mytable(username(length)) 

2. 修改表布局

  1. ALTER table mytable ADD UNIQUE [indexName] (username(length)) 

3. 建设表的时辰直接指定

  1. CREATE TABLE mytable(     
  2. ID INT NOT NULL,      
  3. username VARCHAR(16) NOT NULL,    
  4. UNIQUE [indexName] (username(length))     
  5. ); 

删除索引的语法

  1. DROP INDEX [indexName] ON mytable; 

总结 

  公道操作索引对付晋升数据库的机能、减轻数据库处事器的承担是最直接有用的本领。

  着实,索引的本质就是通过缩小范畴、把随机变乱酿成次序变乱来筛选出最终功效,同时可以老是用统一种查找方法来定位数据,这样就可以分身高服从和不变性。

【编辑保举】

  1. 数据库 | 一次很是风趣的SQL优化经验
  2. 你在 Docker 中跑 MySQL?恭喜你,好下岗了!
  3. Oracle迁徙到MySQL,必必要搞大白这几个题目
  4. 查询数据库,你还在 Select * 吗?
  5. 抛开伟大的架构计划,MySQL优化头脑根基都在这了
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读