1,在什么列适合添加索引

(1)较频繁的作为查询条件字段应该添加索引

select * from emp where empid = 2;

(2)唯一性太差的字段不适合添加索引,即时频繁作为查询条件。

select * from emp where sex = '男';

(3)更新非常频繁的字段不适合创建索引。

select * from emp where logincount = 2;

(4)不会出现在where条件中的字段,不应该创建索引。

2,索引的种类

(1)主键索引,把某列设为主键,此列就成为主键索引。

(2)唯一索引(unique),该列具有唯一性,还是索引。

(3)普通索引(index),

(4)全文索引(FULLTEXT),是有MyISAM存储引擎支持全文索引。

(5)复合索引,多列组成一个索引。

3,索引的操作

(1)添加索引

create [unique|FULLTEXT] index 索引名 on 表名(列名)

alter table 表名 add index 索引名(列名)

以上两种方式没法创建主键索引,创建主键索引语句:alter table 表名 add primary key(列)

(2)删除索引

drop index 索引名 on 表名

alter table 表名 drop index index_name

以上没法删除主键索引,删除主键索引语句如下:alter table 表名 drop primary key

(3)显示索引

show indexes from 表名

show keys from  表名

4,索引的使用

(1)下列几种情况有可能使用索引

(a)对于创建的多列索引,只要查询条件使用了最左边的列,索引一般就会被使用。

news数据表 id title content author ,

设定title和author为索引title_author,那么查询条件中有title字段时候,使用到title_author索引;如果查询条件没有title,只有author,则使用不到title_author索引。

alter table news add index title_author (title,author)。

select * from news where title = '体操奥运会夺冠';  //用到索引

select * from news where author = '李哲'; //使用不到索引

(b)对于使用like的查询,查询如果是'%aaa'不会使用到索引,'aaa%'会使用到索引。

news数据表 id title content author ,

设定title为索引title_index,在查询条件中title字段开头是%,则不能启用title_index索引;字段开头必须不为%,才会启用索引。

alter  table news add index title_index(index);

select * from news where title like '%奥运会夺金';  //没法使用索引

select * from news where title like '奥运会%夺金';  //使用索引

select * from news where title like '%奥运会夺金%';  //使用索引

(2)下列几种情况使用不到索引

(a)如果条件中由or,即使其中有条件带索引也不会使用。

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

(c)like查询是以%开头。

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

(e)如果mysql估计使用全表扫描要比使用索引快,则不使用索引。比如数据表中记录特别少,那可以直接扫描,不用索引。

5,查看索引的使用情况

show status like 'Handle_read%'

其中,Handle_read_key,这个值越高越好,越高表示使用索引查询到的次数越多;

Handle_read_rnd_next,这个值越高,说明查询低效;

四,mysql优化——sql语句优化之索引二的更多相关文章

  1. mysql的sql语句优化方法面试题总结

    mysql的sql语句优化方法面试题总结 不要写一些没有意义的查询,如需要生成一个空表结构: select col1,col2 into #t from t where 1=0 这类代码不会返回任何结 ...

  2. php面试专题---MySQL常用SQL语句优化

    php面试专题---MySQL常用SQL语句优化 一.总结 一句话总结: 原理,万变不离其宗:其实SQL语句优化的过程中,无非就是对mysql的执行计划理解,以及B+树索引的理解,其实只要我们理解执行 ...

  3. MySQL常用SQL语句优化

    推荐阅读这篇博文,索引说的非常详细到位:http://blog.linezing.com/?p=798#nav-3-2 在数据库日常维护中,最常做的事情就是SQL语句优化,因为这个才是影响性能的最主要 ...

  4. MySQL之SQL语句优化

    语句优化 即优化器利用自身的优化器来对我们写的SQL进行优化,然后再将其放入InnoDB引擎中执行. 条件简化 移除不必要的括号 select * from x where ((a = 5)); 上面 ...

  5. 三,mysql优化--sql语句优化之索引一

    1,需求:如何在一个项目中,找到慢查询的select,mysql数据库支持把慢查询语句,记录到日志中.供程序员分析.(默认不启用此功能,需要手动启用) 修改my.cnf文件(有些地方是my.ini) ...

  6. MySQL 数据库--SQL语句优化

    explain查询和分析sql 开发中,为满足一业务功能,使用mysql书写sql时,一条sql往往有多种写法,那么我们就需要选择执行效率比较高的sql. 因此要比较分析sql的执行过程,且同一条sq ...

  7. Mysql的Sql语句优化

    在Mysql中执行Sql语句经常会遇到有的语句执行时间特别长的情况,出现了这种情况我们就需要静下心分析分析. 首先,我们需要确定系统中哪些语句执行时间比较长.这个可以使用Mysql的慢日志来跟踪.下面 ...

  8. 五,mysql优化——sql语句优化小技巧

    1,大批量插入数据 (1)对于MyISAM: alter table table_name disable keys; loading data; alter table table_name ena ...

  9. 千万级大数据的Mysql数据库SQL语句优化

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

随机推荐

  1. Pycharm及python安装详细教程

    首先我们来安装python 1.首先进入网站下载:点击打开链接(或自己输入网址https://www.python.org/downloads/),进入之后如下图,选择图中红色圈中区域进行下载. 2. ...

  2. LFS(Linux From Scratch)学习

    一.简介 LFS──Linux from Scratch,就是一种从网上直接下载源码,从头编译LINUX的安装方式.它不是发行版,只是一个菜谱,告诉你到哪里去买菜(下载源码),怎么把这些生东西( ra ...

  3. jquery阻止表单提交

    <form action="" method="post" onSubmit="return confirm();" > < ...

  4. 跨页传值c#

    Application (4)URL地址中的参数 (5)通过隐藏字段来传递数据 (6)Server.Transfer (7)通过序列化对象 (8)........ 下面就分别一一介绍: (1)使用Se ...

  5. 2018.09.28 牛客网contest/197/A因子(唯一分解定理)

    传送门 比赛的时候由于变量名打错了调了很久啊. 这道题显然是唯一分解定理的应用. 我们令P=a1p1∗a2p2∗...∗akpkP=a_1^{p_1}*a_2^{p_2}*...*a_k^{p_k}P ...

  6. 一个 图片 滚动 飞入的css特效

    @keyframes bounceInLeft { from, 60%, 75%, 90%, to {animation-timing-function: cubic-bezier(0.215, 0. ...

  7. Linux设置开机启动项

    第一种方式:ln -s 建立启动软连接 在Linux中有7种运行级别(可在/etc/inittab文件设置),每种运行级别分别对应着/etc/rc.d/rc[0~6].d这7个目录 Tips:/etc ...

  8. PHP数据库抽象层--PDO(PHP Data Object) [一]

    1.简介:(PDO数据库访问抽象层,统一各种 数据库的访问接口 ) PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口.实现 PDO 接口的每个数据库驱动可以公开具体数据库 ...

  9. Swift要点:从Objective-C开发者的角度看Swift

    代码环境是Xcode6.3-Beta3. Swift已经极大的改变了开发iOS应用的方式.本文中,我会列出Swift的几个重点,并且和Objective-C一一做出对比. 注意,本文不是Swift的入 ...

  10. 高博-《视觉SLAM十四讲》

    0 讲座 (1)SLAM定义 对比雷达传感器和视觉传感器的优缺点(主要介绍视觉SLAM) 单目:不知道尺度信息 双目:知道尺度信息,但测量范围根据预定的基线相关 RGBD:知道深度信息,但是深度信息对 ...