索引+sql优化
索引的概念:
索引是提高查询速度的一种手段。索引有很多种,以下是索引树的结构

要求查询出薪资大于5000的雇员信息,只要在树中找到5000的节点,直接查询该节点右边的数据即可,左边就不用管了,这样提高了查询的效率。
将数据按照索引数据的方式保存需要先创建索引。
基本语法:
CREATE INDEX 索引名 ON 数据表(字段名);
删除索引:
DROP INDEX 索引名;
注意:系统默认主键使用索引。
复合索引
一个索引在多个字段上创建,就是一个索引作用于多个字段。
例如:CREATE INDEX 索引名 ON 数据表(字段1,字段2);
注意:查询数据使用字段2,此时使用的是全表扫描模式,查询数据使用字段1,此时使用的是索引扫描模式。(此现象叫做索引的最左原则)
在Oracle中使用了多个字段,并且是AND 连接的条件,那么字段的顺序不影响扫描的方式(索引扫描),如果是mysql则需要和复合索引的字段顺序一致。使用OR连接条件会导致索引失效,应该使用UNION ALL 代替OR查询。
总结:索引不能随便用。如果一张数据表更新频率太高,更新数据之后需要重新创建索引,这一过程很耗费性能。
Sql的优化*(面试题)
1、对查询进行优化,要尽量避免全表扫描,首先应考虑在进行条件判断的字段上创建索引。(使用索引的数据表不能更新频率太高,否则需要重新再创建索引,耗费性能。)
2、尽量避免在WHERE子句中对字段进行null值判断、对字段进行表达式计算操作、使用!=或<>操作符、使用or来连接条件(如果一个条件有索引一个没有索引),否则将导致引擎放弃使用索引而进行全表扫描。
3、NOT IN 要慎用,否则会导致全表扫描,可用NOT EXISTS代替。
4、模糊查询使用了“%”也会导致索引失效(可以将用户可能输入的关键字使用下拉列表列出来,在数据库中使用全名称查询,比如说:SELECT * FROM emp WHERE job LIKE ‘关键字’)。
5、使用复合索引要满足最左原则,并且应尽可能的让字段顺序与索引顺序一致。
6、UPDATE语句,不要更改全部字段,否则需要重新创建索引,损耗性能
7、对于多张大数据(几百条)的连接(多表连接查询),可以考虑使用程序去实现,尽量不要连接查询(多表查询出现笛卡尔积增加内存开销)。
8、索引不是越多越好,索引提高了select查询的效率,但同时也降低了insert插入及update更新的效率,插入或更新有时可能会重建索引。
9、尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这样会降低查询和连接的性能,并且会增加存储的开销。这是因为引擎在处理查询和连接时会逐个比较字符串中每一个字符,而对于数字型来说只需要比较一次就够了。
10、任何地方都不要使用select *,用具体的字段代替‘*’,不要返回用不到的任何字段。
11、使用慢查询来进行数据库的优化。观察到慢查询的最方便途径是(Spring+Druid)可以轻松的实现,可以观察具体哪些sql语句是执行最慢的,之后再对查询进行优化。
索引+sql优化的更多相关文章
- mysql索引sql优化方法、步骤和经验
MySQL索引原理及慢查询优化 http://blog.jobbole.com/86594/ 细说mysql索引 https://www.cnblogs.com/chenshishuo/p/50300 ...
- 数据库的规范和SQL优化技巧总结
现总结工作与学习中关于数据库的规范设计与优化技巧 1.规范背景与目的 MySQL数据库与 Oracle. SQL Server 等数据库相比,有其内核上的优势与劣势.我们在使用MySQL数据库的时候需 ...
- Oracle 建立索引及SQL优化
数据库索引: 索引有单列索引,复合索引之说,如果某表的某个字段有主键约束和唯一性约束,则Oracle 则会自动在相应的约束列上建议唯一索引.数据库索引主要进行提高访问速度. 建设原则: 1.索引应该经 ...
- SQL优化的四个方面,缓存,表结构,索引,SQL语句
一,缓存 数据库属于 IO 密集型的应用程序,其主要职责就是数据的管理及存储工作.而我们知道,从内存中读取一个数据库的时间是微秒级别,而从一块普通硬盘上读取一个IO是在毫秒级别,二者相差3个数量级.所 ...
- 浅谈SQL优化入门:3、利用索引
0.写在前面的话 关于索引的内容本来是想写的,大概收集了下资料,发现并没有想象中的简单,又不想总结了,纠结了一下,决定就大概写点浅显的,好吧,就是懒,先挖个浅坑,以后再挖深一点.最基本的使用很简单,直 ...
- SQL优化 MySQL版 - 避免索引失效原则(二)
避免索引失效原则(二) 注:继上一篇文章继续讲解: 避免索引失效原则(一)https://www.cnblogs.com/StanleyBlogs/p/10482048.html#4195062 作者 ...
- SQL优化 MySQL版 - B树索引详讲
SQL优化 MySQL版 - -B树索引详讲 作者:Stanley 罗昊 [转载请注明出处和署名,谢谢!] 为什么要进行SQL优化呢?很显然,当我们去写sql语句时: 1会发现性能低 2.执行时间太 ...
- SQL优化 MySQL版 - 避免索引失效原则(一)
避免索引失效原则(一) 精力有限,剩余的失效原则将会在 <避免索引失效原则(二)>中连载出来,请谅解 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 避免索引失效的一些原 ...
- SQL优化 MySQL版 - 索引分类、创建方式、删除索引、查看索引、SQL性能问题
SQL优化 MySQL版 - 索引分类.创建方式.删除索引.查看索引.SQL性能问题 作者 Stanley 罗昊 [转载请注明出处和署名,谢谢!] 索引分类 单值索引 单的意思就是单列的值,比如说有 ...
随机推荐
- ubuntu apt-get 代理
# cat /etc/apt/apt.conf Acquire::http::Proxy "http://109.105.4.17:8119"; Acquire::https::P ...
- 105. Construct Binary Tree from Preorder and Inorder Traversal (Tree; DFS)
Given preorder and inorder traversal of a tree, construct the binary tree. Note: You may assume that ...
- POJ1163 数学三角求最大路径
描述:输入,行数,之后接数据,第一行一个数据,之后每行加一.5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 思路:简单动态规划问题.dp[i][j]定义为到这个数为止(包括这个数)的最 ...
- redis的连接方法|连接池|操作
1.先看下redis的连接 import redis # 连接服务端 r = redis.Redis(host="127.0.0.1",port=6379) #获取所有的key值 ...
- 在Linux下删除文件及文件夹(rm)
删除目录.文件 rm(remove) 功能说明:删除文件或目录.语 法:rm [-dfirv][--help][--version][文件或目录...]补充说明:执行rm指令可删除文件或目录,如欲删除 ...
- 微信小程序-滑动视图注意事项
真的得吐槽下微信的开发文档,一点点都不详细的好吗. <!--垂直滚动,这里必须设置高度--> <scroll-view scroll-y="true" style ...
- 系统批量运维管理器paramiko详解
一.paramiko介绍 paramiko是基于Python实现的SSH2远程安全连接,支持认证及密钥方式.可以实现远程命令执行.文件传输.中间SSH代理等功能,相对于Pexpect,封装的层次更高, ...
- SVG DOM常用属性和方法介绍(1)
12.2 SVG DOM常用属性和方法介绍 将以Adobe SVG Viewer提供的属性和方法为准,因为不同解析器对JavaScript以及相关的属性和方法支持的程度不同,有些方法和属性是某个解析 ...
- [Training Video - 1] [Introduction to Web services]
What is a web service? http://webservicex.net/ws/default.aspx WebService是一种跨编程语言和跨操作系统平台的远程调用技术. 跨编程 ...
- HTML5 本地存储+layer弹层组件制作记事本
什么是 HTML5 Web 存储? 使用HTML5可以在本地存储用户的浏览数据. 早些时候,本地存储使用的是 cookie.但是Web 存储需要更加的安全与快速. 这些数据不会被保存在服务器上,但是这 ...