什么是索引:

  索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。

建立索引合适的列

  经常用作where条件的列,order by排序的列

  数据列不重复而且并不是唯一的几个值

  不被经常修改的列

普通查询

SELECT * FROM emp WHERE empno=100002

查询缓存

SHOW GLOBAL VARIABLES LIKE '%query_cache%'

表的引擎 innodb:第一次查询走数据文件,再次回走缓存

SHOW VARIABLES LIKE '%storage_engine%'

加入索引

ALTER TABLE emp ADD INDEX(empno)
SELECT * FROM emp WHERE empno=100002

InnoDB:frm为表结构文件 ibd为索引+数据 文件

是否使用了索引

EXPLAIN SELECT * FROM emp WHERE empno=100002

添加组合索引 (第一个索引列会使用索引,第二个索引列单独使用的时候不会使用索引)

ALTER TABLE dept ADD INDEX my_ind (dname,loc)
SELECT * FROM dept WHERE dname='AfZIrJvZNO'
EXPLAIN SELECT * FROM dept WHERE dname='AfZIrJvZNO'
EXPLAIN SELECT * FROM dept WHERE dname='AfZIrJvZNO' AND loc='IWHzzYwk'
EXPLAIN SELECT * FROM dept WHERE loc='IWHzzYwk' AND dname='AfZIrJvZNO'

模糊查询 如果like前加 % 不会使用索引

EXPLAIN SELECT * FROM dapt WHERE dname LIKE '%AfZIrJvZNO%'

使用or,or不会使用索引,

EXPLAIN SELECT * FROM dept WHERE loc='IWHzzYwk' OR dname='AfZIrJvZNO'

需保证列都有索引

EXPLAIN SELECT * FROM dept WHERE deptno='10070' OR dname='AfZIrJvZNO'

判断是否为null 应使用in
explain select * from dept where dname=null

EXPLAIN SELECT * FROM dept WHERE dname IN NULL

group by 默认不是用索引

EXPLAIN SELECT * FROM emp GROUP BY deptno
EXPLAIN SELECT * FROM emp GROUP BY deptno ORDER BY NULL

查询时尽量少用 >= <=等等

EXPLAIN SELECT * FROM dept WHERE deptno<'10070'

注意事项

  不要在列上进行运算

  不使用NOT IN操作

    NOT IN操作都不会使用索引将进行全表扫描。NOT IN可以NOT EXISTS代替

  

最新文章

  1. set和map的简单用法
  2. Change Git Default Editor in Windows
  3. 445. Add Two Numbers II ——while s1 or s2 or carry 题目再简单也要些测试用例
  4. android sqlite操作(1)
  5. SQL 触发器(学生,课程表,选修表)
  6. ASP.net button类控件click事件中传递参数
  7. 编译Release版本小技巧
  8. java面试题(一)
  9. git使用命令总结
  10. C3P0 APPARENT DEADLOCK
  11. python安装json的方法;以及三种json库的区别
  12. Python函数声明以及与其他编程语言数据类型的比较
  13. pyqt pyside 窗口自动调整大小
  14. NTP时间服务器实战应用详解-技术流ken
  15. windows 公司内部搭建禅道(项目管控)
  16. Windows 7 上面安装 dotnet core 之后 使用 应用报错的处理:api-ms-win-crt-runtime-l1-1-0.dll 丢失
  17. easyui datagrid columns的field支持属性的子属性(field.sonfield形式或者格式化程序形式)
  18. HowTo: Restart SSH Service under Linux / UNIX
  19. git多仓库管理
  20. Django 1.10中文文档-第一个应用Part3-视图和模板

热门文章

  1. access denied (2)
  2. 第二十一篇 Linux中的环境变量简单介绍
  3. 设备驱动基础学习--misc device简单实现
  4. Linux源码编译安装nginx
  5. Redis安装及局域网访问配置CentOS
  6. scp--linux命令
  7. Springmvc-crud-04错误(路径变量)
  8. 解决tensorflow Saver.restore()无效的问题
  9. html学习-第一集(基本标签)
  10. 【MySQL】存储引擎