1索引作用

说起提高数据库性能,索引是最物美价廉的东西了。不用加内存,不用改程序,不用调sql,只要执行个正确的’create index’,查询速度就可能提高百倍千倍,这可真有诱惑力。可是天下没有免费的午餐,查询速度的提高是以插入、更新、删除的速度为代价的,这些写操作,增加了大量的I/O。

主索引,主键自动的为主索引 (类型Primary)
唯一索引 (UNIQUE)
普通索引 (INDEX)
全文索引 (FULLTEXT)(只有MyISAM存储引擎支持) sphinx + 中文分词    coreseek
综合使用=>复合索引

必要性:

a较频繁的作为查询条件字段应该创建索引
 select * from emp where empno = 1
b唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件
 select * from emp where sex = '男'
c更新非常频繁的字段不适合创建索引
 select * from emp where logincount = 1
d不会出现在WHERE子句中字段不该创建索引:)

2索引建立

create [UNIQUE|FULLTEXT]  index index_name on tbl_name (col_name [(length)] [ASC | DESC] , …..); alter table table_name ADD INDEX [index_name]     (index_col_name,...)
 添加主键(索引) ALTER TABLE 表名 ADD PRIMARY KEY(列名,..); 联合主键

3索引删除

删除索引 DROP INDEX index_name ON tbl_name; alter table table_name drop index index_name;
 删除主键(索引)比较特别: alter table t_b drop primary key;

4查询索引

查询索引(均可) show index from table_name; show keys from table_name; desc table_Name;

5重点介绍(索引虽然建立了,但是不被使用的情况)

查询要使用索引最重要的条件是查询条件中需要使用索引。
下列几种情况下有可能使用到索引: 1,对于创建的多列索引,只要查询条件使用了最左边的列,索引一般就会被使用。

2,对于使用like的查询,查询如果是  ‘%aaa’ 不会使用到索引
 ‘aaa%’ 会使用到索引。
下列的表将不使用索引:

1,如果条件中有or,即使其中有条件带索引也不会使用。

2,对于多列索引,不是使用的第一部分,则不会使用索引。

3,like查询是以%开头

4,如果列类型是字符串,那一定要在条件中将数据使用引号引用起来。否则不使用索引。

5,如果mysql估计使用全表扫描要比使用索引快,则不使用索引。

6 测试索引的效果:

查看索引的使用情况

show status like ‘Handler_read%’;

大家可以注意: handler_read_key:这个值越高越好,越高表示使用索引查询到的次数。
 handler_read_rnd_next:这个值越高,说明查询低效。

或者使用explain分析问题(优化可以使用explain)

Explain select * from emp where ename=“zrlcHd” 会产生如下信息: select_type:表示查询的类型。 table:输出结果集的表 type:表示表的连接类型 possible_keys:表示查询时,可能使用的索引 key:表示实际使用的索引 key_len:索引字段的长度 rows:扫描的行数 Extra:执行情况的描述和说明;如图:

mysql挖掘与探索------第2章 索引1-1的更多相关文章

  1. mysql挖掘与探索------第2章 索引1-2 全文索引FULLTEXT

    A 显示表的所有索引: show INDEX from phphi_article; B删除索引:alter table phphi_article drop INDEX fullwords; C添加 ...

  2. mysql挖掘与探索------第一章(简介)

    一.数据库简介: 1按照数据库发展时间,主要出现下面几个类型的数据库系统: a 网状型数据库 b 层次型数据库 c 关系型数据库 d 面向对象数据库 上面4中数据库系统中,关系型数据库使用最为广泛.面 ...

  3. mysql挖掘与探索--表操作命令 1

    1.登录数据库>mysql -u root -p 数据库名称 2.查询所有数据表>show tables; 3.查询表的字段信息>desc 表名称; 4.1添加表字段 alter t ...

  4. MySQL基础之第7章 索引

    第7章 索引 MySQL中,所有的数据类型都可以被索引,包括普通索引,唯一性索引,全文索引,单列索引,多列索引和空间索引等. 7.1.索引简介 7.1.1.索引的含义和特点 BTREE索引,HASH索 ...

  5. 高性能mysql 第五章 索引部分总结

    高性能索引 1.索引基础:索引的作用类似'目录'帮助Query来快速定位数据行. 1.1索引类型: 1.1.1 b-tree索引 b-tree(balance tree)索引:使用平衡树(非平衡二叉树 ...

  6. MySQL高级第二章——索引优化分析

    一.SQL性能下降原因 1.等待时间长?执行时间长? 可能原因: 查询语句写的不行 索引失效(单值索引.复合索引) CREATE INDEX index_user_name ON user(name) ...

  7. 点评阿里JAVA手册之MySQL数据库 (建表规约、索引规约、SQL语句、ORM映射)

    下载原版阿里JAVA开发手册  [阿里巴巴Java开发手册v1.2.0] 本文主要是对照阿里开发手册,注释自己在工作中运用情况. 本文内容:MySQL数据库 (建表规约.索引规约.SQL语句.ORM映 ...

  8. Mysql实战45讲 05讲深入浅出索引(下)极客时间 读书笔记

    极客时间 Mysql实战45讲 04讲深入浅出索引(下)极客时间 笔记体会: 回表:回到主键索引树搜索的过程,称为回表覆盖索引:某索引已经覆盖了查询需求,称为覆盖索引,例如:select ID fro ...

  9. Mysql实战45讲 04讲深入浅出索引(上)读书笔记 极客时间

    极客时间 Mysql实战45讲 04讲深入浅出索引 极客时间(上)读书笔记  笔记体悟 1.索引的作用:提高数据查询效率2.常见索引模型:哈希表.有序数组.搜索树3.哈希表:键 - 值(key - v ...

随机推荐

  1. shell中通过sed替换文件中路径

    通常sed指令修改行内容时使用:sed -i " 9 s/^.*/"type in what you want modified!"/" 其中"typ ...

  2. 明明办理的是100M光纤,为何经过路由器输出只有20M?

    就在今年7月26日,宽带发展联盟发布了第20期<中国宽带速率状况报告>(2018年第二季度).报告显示,2018年第二季度我国固定宽带网络平均下载速率达到21.31Mbps,比去年第二季度 ...

  3. Node.js—第一个动态页面

    话不多说 上代码 没有加什么处理也不严谨 只为效果 const http=require('http'), path=require('path'), fs=require('fs') //创建服务 ...

  4. 测网速 fping Linux查看网络即时网速 linux性能问题(CPU,内存,磁盘I/O,网络)

    Linux查看网络即时网速 fping 是ping 工具的加强版本 例出局域网中存活的主机 (Ubuntu apt-get装上  cnetos装不上) zzx@zzx11:~$ fping -a 19 ...

  5. Java 继承(extends)、抽象类(abstract)的特点用法原理(7)

    Java  中的继承 继承: java中的抽象类用法原理: /* 当多个类中出现相同功能,但是功能主体不同, 这是可以进行向上抽取.这时,只抽取功能定义,而不抽取功能主体. 抽象:看不懂. 抽象类的特 ...

  6. 【论文笔记系列】AutoML:A Survey of State-of-the-art (下)

    [论文笔记系列]AutoML:A Survey of State-of-the-art (上) 上一篇文章介绍了Data preparation,Feature Engineering,Model S ...

  7. 主导SEO成败的关键是细节的布局,细数SEO三大布局思路

    有的人认为SEO操作就类似车间工作,有一个完整的流程,整套流程下来网站就会有一个好的排名.这样是不对的,优化的着重点是要有一个好的思维,技巧和策略,把这些着重点相结合的运用到SEO优化中,很大的机率会 ...

  8. solr集群的搭建

    solrCloud 昨天随手写了个solr单机版的搭建,今天准备写一个solr集群的搭建!1.solr集群只要环境配置正确还是比较简单的环境:CentOS-6.4-i386-bin-DVD1.isoj ...

  9. Activiti工作流的入门介绍

    一.activiti介绍 Activiti5是一个 业务流程管理(BPM)框架,它是覆盖了业务流程管理.工作流.服务协作等领域的一个开源的.灵活的.易扩展的可执行流程语言框架.Activiti基于Ap ...

  10. tensorflow slim训练以及到安卓部署教程

    https://blog.csdn.net/chenyuping333/article/details/81537551 https://blog.csdn.net/u012328159/articl ...