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优化与索引使用相关推荐

  1. SQL优化中索引列使用函数之灵异事件

    SQL优化中索引列使用函数之灵异事件 在SQL优化内容中有一种说法说的是避免在索引列上使用函数.运算等操作,否则Oracle优化器将不使用索引而使用全表扫描,但是也有一些例外的情况,今天我们就来看看该 ...

  2. 霜皮剥落紫龙鳞,下里巴人再谈数据库SQL优化,索引(一级/二级/聚簇/非聚簇)原理

    举凡后端面试,面试官不言数据库则已,言则必称SQL优化,说起SQL优化,网络上各种"指南"和"圣经"难以枚举,不一而足,仿佛SQL优化已然是妇孺皆知的理论常识, ...

  3. MySQL数据库:SQL优化与索引优化

    一.索引优化: 1.like语句的前导模糊查询不使用索引: select * from doc where title like '%XX':   --不能使用索引 select * from doc ...

  4. 记一次sql优化之索引的引用

    sql 优化时,一张200条数据的表,觉得数据量太少根本无须加索引,在一长段sql 优化无果后,发现这张表被频繁分组引用了四次,在外键加上索引后,成功优化... 所以数据量少的表,被频繁引用也需要加索 ...

  5. sql优化和索引常见的面试题(面试总结)

    1.什么是索引 索引指数据库的目录,比如:字典上面的字母目录 (适用于大数据量) 2.建立索引的优缺点 优点:查询速度快 缺点:增删改慢,因为数据库要同步去维护索引文件,所以速度慢 3.索引有哪些 普 ...

  6. SQL优化:索引优化

    SQL索引 SQL索引在数据库优化中占有一个非常大的比例, 一个好的索引的设计,可以让你的效率提高几十甚至几百倍,在这里将带你一步步揭开他的神秘面纱. 1.1 什么是索引? SQL索引有两种,聚集索引 ...

  7. MySQL高级篇(SQL优化、索引优化、锁机制、主从复制)

    目录 0 存储引擎介绍 1 SQL性能分析 2 常见通用的JOIN查询 SQL执行加载顺序 七种JOIN写法 3 索引介绍 3.1 索引是什么 3.2 索引优劣势 3.3 索引分类和建索引命令语句 3 ...

  8. SQL优化避免索引失效

    Oracle 索引的目标是避免全表扫描,提高查询效率,但有些时候却适得其反.例如一张表中有上百万条数据,对某个字段加了索引,但是查询时性能并没有什么提高,这可 能是 oracle 索引失效造成的.or ...

  9. SQL优化之索引优化

    索引优化 1. 分析SQL执行的性能 ​ 使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理SQL语句的.分析所编写的查询语句或是表结构的性能瓶颈. 具体语法: E ...

  10. 以小博大外小内大,Db数据库SQL优化之小数据驱动大数据

    SQL优化中,有一条放之四海而皆准的既定方针,那就是:永远以小数据驱动大数据.其本质其实就是以小的数据样本作为驱动查询能够优化查询效率,在SQL中,涉及到不同表数据的连接.转移.或者合并,这些操作必须 ...

最新文章

  1. class instance java_[Java] Java instanceof 和 Class.isInstance()区别与应用
  2. 在高并发分布式情况下生成唯一标识id
  3. 学习记录-windows,开发板互通上网
  4. Apache配置HTTPS功能
  5. 计算机项目教学法探讨,【计算机教学论文】项目教学法在计算机教学中的应用(共3594字)...
  6. 看动画轻松理解「Trie树」
  7. JAVA中的多线程(八):线程的优先级和yield方法
  8. 给 Chrome浏览器 添加 Javascript小书签,查看当前页面全部加载的javascript文件及代码片段...
  9. JAVA反射性能约慢三个量级
  10. CS1.5制造机器人的命令
  11. 八种样本抽样方法介绍
  12. windows图片和传真查看器
  13. 临沂最美乡村医生彭玉梅:救人遇车祸身亡
  14. Python 五角星的画法 five star
  15. ROS——在Ubuntu18.04下基于ROS Melodic编译python3的cv_bridge
  16. PDF文件格式转换工具 迅捷PDF转换成Word转换器
  17. D. Little Girl and Maximum XOR(贪心)
  18. 广电在5G时代的发展和应对策略
  19. 整理 刘汝佳紫书第三章习题代码 未完待续
  20. Matlab之图像变换技术(十二)

热门文章

  1. hlg2146【多维背包】
  2. 新手如何配置WordPress站点
  3. datamodeler mysql_Navicat Data Modeler功能简介
  4. macOS Monterey 12.3 (21E230) 正式版 ISO、IPSW、PKG 下载
  5. ural 1818 Fair Fishermen
  6. 新站如何做到短时间内获得大量的seo流量?
  7. 电脑只能上QQ不能开网页
  8. 手写平衡二叉树(二)
  9. 中国未来可能面临的第四次失业浪潮
  10. table组件抽离封装