数据库查询优化

1、尽量避免扫描全表,对涉及到where或order by的列上添加索引;当然索引也不是越多越好,例如性别字段,在性别比数据量大致相等的情况,因为有大量重复列时,索引不会生效,然而却会在新增和删除时增加额外的消耗(因为增删可能会重建索引)

2、尽量不使用select * 而查询业务所需要的字段select id。

3、能用between 解决就不要用in 查询,因为当使用in查询时,查询的数据达到一定的比例,搜索引擎就会放弃索引,而进行全表扫描。

如 :取区间为[1,4]

select id from t where id in(1,2,3,4);可以优化为

select id from t where id between 1 and 4;

4、避免在where条件中对null值进行判断,否则会导致搜索引擎放弃使用索引而进行全表扫描

如:select name from t where name is null;

如果业务允许,可以给对应字段赋予默认值

5、如果两个表中一个表较小,一个表较大,那么子查询表大的用exists,子查询表小的用In,效率会高的。

也就是说 IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况,这样效率会高的

如 :表s是小表,表b是大表

select * from s where exists (select aid from b where b.aid = s.aid) 扫描s全表,用到b表上的aid的索引。因为b表大。

select * from b where aid in (select aid from s)   扫描s 全表,用到b表上的aid 索引

6、Not in和Not Exists的效率

如果查询语句使用了Not In,那么内外表全部进行扫描,没有乃至索引

Not Exist用到子表中的索引进行查询,所以无论两个表中哪个表大,Not exists 都要比Not in 要快

7、不要在 where子句中的"="左边使用表达式,因为这样可能会导致无法正确使用索引

如:where id*3 = 6;改为 id = 2;

8、避免使用 !=和<>符号,否则会导致引擎放弃使用索引而扫描全表

转载于:https://www.cnblogs.com/msqz/p/8427854.html

数据库优化的几种方法相关推荐

  1. Java实现数据批量导入数据库(优化速度-2种方法)

    目录 程序结构 连接数据程序 批量处理的两种方式 main方法 使用JDBC连接MySQL数据库进行数据插入的时候,经常会遇到数据量较大,插入数据库较慢,如何进行优化,加快导入数据库的速度,批量处理呢 ...

  2. 关于数据库优化的几种方法

    首先,要讲清为什么要进行sql优化,sql的优化可能当你在写单个程序的时候,你的感触没有那么深,但是当程序中有很多sql的时候,你就会发现,sql的优化有多么重要.个别sql的查询数据量可能会很大,当 ...

  3. mysql数据库优化的几种方法

    1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽 ...

  4. 修改mysql数据库名方法_安全快速修改Mysql数据库名的5种方法

    1. RENAME DATABASE db_name TO new_db_name 这个..这个语法在mysql 5.1.7中被添加进来,到了5.1.23又去掉了. 据说有可能丢失数据.还是不要用的好 ...

  5. golang string 加号连接性能慢_面试必备:浅析C#性能优化的若干种方法

    浅析C#性能优化的若干种方法 1.1 垃圾回收 垃圾回收解放了手工管理对象的工作,提高了程序的健壮性,但副作用就是程序代码可能对于对象创建变得随意. 1.1.1 避免不必要的对象创建 由于垃圾回收的代 ...

  6. MySQL性能优化的9种方法

    MySQL性能优化的9种方法 1.选择最合适的字段属性 Mysql是一种关系型数据库,可以很好地支持大数据量的存储,但是一般来说,数据库中的表越小,在它上面执行的查询也就越快.因此,在创建表的时候,为 ...

  7. 数据库软件安装和数据库创建的几种方法

    数据库软件安装: 图形界面安装 静默方式安装 通过复制已经存在的数据库安装 数据库创建的几种方法 图形界面创建 静默方式创建 利用已经存在的实例创建 通过手工创建 先做总结后期完善. 转载于:http ...

  8. Oracle数据库备份与恢复的三种方法

    Oracle数据库备份与恢复的三种方法 Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP).热备份和冷备份.导出备件是一种逻辑备份,冷备份和热备份是物理备份. 一. 导出/ ...

  9. 在生产环境下处理EFCore数据库迁移的五种方法

    在生产环境下处理EFCore数据库迁移的五种方法 原文链接:https://www.thereformedprogrammer.net/handling-entity-framework-core-d ...

最新文章

  1. 【Linux系统编程】进程间通信之命名管道
  2. WebRTC安全体系架构的8个组件
  3. git branch 为什么会进入编辑状态_最好的Git分支管理教程
  4. 分别描述TCP的3次握手和四次挥手的定义、目的和过程
  5. python内置函数__init__及__str__的区别
  6. 计算机视觉实战(十二)全景图像拼接(附完整代码)
  7. JavaSE基础——IO流详解(2)其他常用的流和Properties 集合
  8. C# Winform 实现屏蔽键盘的win和alt+F4的实现代码
  9. 2022-02-27周报
  10. Asterisk与zoiper搭建
  11. android---动画入门(一)
  12. Jmeter_基本操作-取样器
  13. c语言大小写字母变换,C语言学习:任意大小写字母转换
  14. endNote教程-5、6-高效阅读文献+高效文献调研
  15. 自媒体平台数据统计分析爬虫之【趣头条】模拟登陆分析详解及数据统计接口详解
  16. 使用mac的加速办法
  17. NLP之NER:商品标题属性识别探索与实践
  18. 如何解决弹出 C:\WINDOWS\system32\Macromed\Flash\Flash32_11_2_202_228.ocx 问题。
  19. VS2019卸载和安装Visual Assist x番茄助手教程
  20. java tolist_java – Collectors.toList()返回什么类型的List?

热门文章

  1. 韩忠康 5天玩转mysql_玩转MySQL数据库5天就够了(2)
  2. android中获取应用程序(包)的信息,Android中获取应用程序(包)的信息PackageManager的使用(一).doc...
  3. 长沙android工程师,长沙安卓工程师辅导
  4. 凸台可以延伸吗_知道对比度、清晰度和锐化的差别吗?操作不好,让一张照片报废...
  5. oracle 树形结构表,树结构表递归查询在ORACLE和MSSQL中的实现方法
  6. ML 12 13 mixture of gaussions and EM
  7. EfficientNet-B4-Ranger:自然复杂环境下温室黄瓜病害识别新方法(同时存在两种疾病)
  8. rtcp webrtc 接收_WebRTC RTP/RTCP 源码分析(四):RTCP 的接收和解析
  9. 数据缺失,如何智能修复?第一名方案源码分享
  10. 7模型集成:细粒度用户评论情感分析冠军思路及源码