MySQL Optimization Part 4 - Indexes Usage

原创 2016年08月31日 01:57:43

MySQL Optimization Part 4 - Indexes Usage

目录


索引的注意事项

索引的代价:

  • 占用磁盘空间
  • 对 dml 操作有影响,变慢

哪些列适合添加索引

  • 较频繁的作为查询条件字段应该创建索引

    select * from emp where empno = 1
  • 唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件

    select * from emp where sex = '男’
  • 更新非常频繁的字段不适合创建索引

        select * from emp where logincount = 1
  • 不会出现在WHERE子句中字段不该创建索引

总结: 满足以下条件的字段,才应该创建索引.

  • 肯定在 where 条经常使用
  • 该字段的内容不是唯一的几个值 (sex)
  • 字段内容不是频繁变化.

索引的使用

查询要使用索引最重要的条件是查询条件中需要使用索引。

# 把dept表中,我增加几个部门:

alter table dept add index my_ind (dname,loc); // dname 左边的列,loc就是右边的列

说明,如果我们的表中有复合索引(索引作用在多列上), 此时我们注意:

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

        explain select * from dept where loc='aaa'\G  // 不会使用到索引
  • 对于使用like的查询,查询如果是 %aaa 不会使用到索引, aaa% 会使用到索引。

        explain select * from dept where dname like '%aaa'\G
        /*不能使用索引,即在like查询时,关键的 ‘关键字’ , 最前面,不能使用 % 或者 _ 这样的字符., 如果一定要前面有变化的值,则考虑使用 全文索引->sphinx.*/
  • 如果条件中有 or,即使其中有部分条件带索引也不会使用。换言之,就是要求使用的所有字段,都必须建立索引, 我们建议大家尽量避免使用 or 关键字。

  • 如果列类型是字符串,那一定要在条件中将数据使用引号引用起来。否则不使用索引。(添加时,字符串必须 用单引号 ’ ’ 包起来), 也就是,如果列是字符串类型,就一定要用 ’ ’ 把他包括起来.

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


查看索引的使用情况

show status like ‘Handler_read%’;

注意

  • handler_read_key: 这个值越高越好,越高表示使用索引查询到的次数。
  • handler_read_rnd_next: 这个值越高,说明查询低效。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

MySQL Optimization Part 3 - Indexes Operations

MySQL Optimization Part 3 - Indexes Operations目录 MySQL Optimization Part 3 - Indexes Operations 目录 索...

MySQL Optimization Part 2 - Slow Queries

MySQL Optimization Part 2 - Slow Queries目录 MySQL Optimization Part 2 - Slow Queries 目录 常用 MySQL 状态查询...

Oracle Memory Troubleshooting, Part 4: Drilling down into PGA memory usage with V$PROCESS_MEMORY_DET

Oracle Memory Troubleshooting, Part 4: Drilling down into PGA memory usage with V$PROCESS_MEMORY_DET...
  • loryliu
  • loryliu
  • 2015年11月29日 15:12
  • 245

8.3 Optimization and Indexes

  • 2016年07月15日 14:04
  • 216KB
  • 下载

Code Optimization - Effective Memory Usage.rar

  • 2007年11月05日 16:41
  • 10.41MB
  • 下载

MySQL Optimization Part 5 - Optimization Tips

MySQL Optimization Part 5 - Optimization Tips目录 MySQL Optimization Part 5 - Optimization Tips 目录 常...

Code.Optimization.Effective.Memory.Usage

  • 2008年06月01日 14:10
  • 10.41MB
  • 下载

Realtime Hadoop usage at Facebook -- Part 2 - Workload Types

This is the second part of our SIGMOD-2011 paper that describes our use case for Apache Hadoop and A...
  • macyang
  • macyang
  • 2011年06月06日 20:16
  • 707

Realtime Hadoop usage at Facebook -- Part 1

Facebook recently deployed Facebook Messages, its first ever user-facing application built on the Ap...
  • macyang
  • macyang
  • 2011年06月06日 20:15
  • 689

Guide for camera usage in DB410c(1) - Software part - Android L 5.1.1

之前大家有看过我们的github(https://github.com/Kevin-WSCU/96Boards-Camera),基于debian OS开发了多款sensor. 最近我们继续在AISTA...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MySQL Optimization Part 4 - Indexes Usage
举报原因:
原因补充:

(最多只允许输入30个字)