sql优化与索引使用
1.避免出现select * ,以指定列名以取代select *
2.避免在字段开头模糊查询,会导致数据库放弃索引进行全表扫描,列如
select * from t where uname like '%张三%'
优化方式: 尽量在字段后面使用模糊查询。如
select * from t where uname like '张%'
3.尽量避免使用in 和 not in, 会导致引擎走全表扫描。
select * from t where id in (2,3)
优化方式:如果连续数值,可以用between代替。如:
select * from t where id between 2 and 3
4.避免使用or,会导致数据库引擎放弃索引进行全表扫描。如
select * from user where id = 1001 or id= 1003
优化方式:可以用union代替or。如
select * from user where id =1001
union
select * from user where id =1003
5.多表关联查询,小表在前,大表在后。
在mysql中,执行from后的表关联查询是从左到右执行,第一张表会设计到全表扫描,所以将小表放在前面,先扫描小表,扫描效率高。
6.sql 查询执行顺序
from,join
where
group by
having
select
distinct
order by
limit,offset
7.索引创建和使用原则
单表查询:哪个列作查询条件,就在该列创建索引
多表查询: left join时,索引添加到有表关联字段
不要对索引列进行任何操作。
索引列不要使用 !=,<>
索引列不要为空,且不要使用 is null 或者 is not null 判断
8.sql语句尽可能简单
9.区分 in 和 exists、not in 和 not exists
如果是exists,那么以外层表为驱动表,先被访问,如果是in,那么以外层表为驱动表,先被访问,如果in,那么先执行子查询。所以 in适合于外表大而内表小的情况;exists适合于外表小而内表大的情况
10.待补充
sql优化与索引使用相关推荐
- SQL优化中索引列使用函数之灵异事件
SQL优化中索引列使用函数之灵异事件 在SQL优化内容中有一种说法说的是避免在索引列上使用函数.运算等操作,否则Oracle优化器将不使用索引而使用全表扫描,但是也有一些例外的情况,今天我们就来看看该 ...
- 霜皮剥落紫龙鳞,下里巴人再谈数据库SQL优化,索引(一级/二级/聚簇/非聚簇)原理
举凡后端面试,面试官不言数据库则已,言则必称SQL优化,说起SQL优化,网络上各种"指南"和"圣经"难以枚举,不一而足,仿佛SQL优化已然是妇孺皆知的理论常识, ...
- MySQL数据库:SQL优化与索引优化
一.索引优化: 1.like语句的前导模糊查询不使用索引: select * from doc where title like '%XX': --不能使用索引 select * from doc ...
- 记一次sql优化之索引的引用
sql 优化时,一张200条数据的表,觉得数据量太少根本无须加索引,在一长段sql 优化无果后,发现这张表被频繁分组引用了四次,在外键加上索引后,成功优化... 所以数据量少的表,被频繁引用也需要加索 ...
- sql优化和索引常见的面试题(面试总结)
1.什么是索引 索引指数据库的目录,比如:字典上面的字母目录 (适用于大数据量) 2.建立索引的优缺点 优点:查询速度快 缺点:增删改慢,因为数据库要同步去维护索引文件,所以速度慢 3.索引有哪些 普 ...
- SQL优化:索引优化
SQL索引 SQL索引在数据库优化中占有一个非常大的比例, 一个好的索引的设计,可以让你的效率提高几十甚至几百倍,在这里将带你一步步揭开他的神秘面纱. 1.1 什么是索引? SQL索引有两种,聚集索引 ...
- MySQL高级篇(SQL优化、索引优化、锁机制、主从复制)
目录 0 存储引擎介绍 1 SQL性能分析 2 常见通用的JOIN查询 SQL执行加载顺序 七种JOIN写法 3 索引介绍 3.1 索引是什么 3.2 索引优劣势 3.3 索引分类和建索引命令语句 3 ...
- SQL优化避免索引失效
Oracle 索引的目标是避免全表扫描,提高查询效率,但有些时候却适得其反.例如一张表中有上百万条数据,对某个字段加了索引,但是查询时性能并没有什么提高,这可 能是 oracle 索引失效造成的.or ...
- SQL优化之索引优化
索引优化 1. 分析SQL执行的性能 使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理SQL语句的.分析所编写的查询语句或是表结构的性能瓶颈. 具体语法: E ...
- 以小博大外小内大,Db数据库SQL优化之小数据驱动大数据
SQL优化中,有一条放之四海而皆准的既定方针,那就是:永远以小数据驱动大数据.其本质其实就是以小的数据样本作为驱动查询能够优化查询效率,在SQL中,涉及到不同表数据的连接.转移.或者合并,这些操作必须 ...
最新文章
- class instance java_[Java] Java instanceof 和 Class.isInstance()区别与应用
- 在高并发分布式情况下生成唯一标识id
- 学习记录-windows,开发板互通上网
- Apache配置HTTPS功能
- 计算机项目教学法探讨,【计算机教学论文】项目教学法在计算机教学中的应用(共3594字)...
- 看动画轻松理解「Trie树」
- JAVA中的多线程(八):线程的优先级和yield方法
- 给 Chrome浏览器 添加 Javascript小书签,查看当前页面全部加载的javascript文件及代码片段...
- JAVA反射性能约慢三个量级
- CS1.5制造机器人的命令
- 八种样本抽样方法介绍
- windows图片和传真查看器
- 临沂最美乡村医生彭玉梅:救人遇车祸身亡
- Python 五角星的画法 five star
- ROS——在Ubuntu18.04下基于ROS Melodic编译python3的cv_bridge
- PDF文件格式转换工具 迅捷PDF转换成Word转换器
- D. Little Girl and Maximum XOR(贪心)
- 广电在5G时代的发展和应对策略
- 整理 刘汝佳紫书第三章习题代码 未完待续
- Matlab之图像变换技术(十二)