- 浏览: 137229 次
- 性别:
- 来自: 深圳
文章分类
最新评论
总结一下项目中经常使用的MySQL SQL优化最佳实践
1.IN查询包含的值不应过多
建议最多不超过5个,虽然MySQL对于IN做了相应的优化——IN中的常量全部存储在一个数组里面,并对这个数组进行排好序。但是如果数值较多,产生的消耗也是比较大的。
对于in(1,2,3) 这样连续的数值,可以使用between或者使用连接来替换。
2. SELECT语句务必指明字段名称
3. 当只需要一条数据的时候,使用limit 1
这样可以使得EXPLAIN中的type列达到const类型
4. 如果排序字段没有用到索引,就尽量少排序
5. 如果限制条件中其他字段没有索引,尽量少用or
很多时候使用 union all 或者是union(必要的时候)的方式来代替“or”会得到更好的效果
6. 尽量用union all代替union
union和union all的差异主要是前者需要将结果集合并后再进行唯一性过滤操作,这就会涉及到排序,增加大量的CPU运算,加大资源消耗及延迟。 union all的前提条件是两个结果集没有重复数据。
7. 区分in和exists, not in和not exists
区分in和exists主要是造成了驱动顺序的改变,如果是exists,那么以外层表为驱动表,先被访问,如果是IN,那么先执行子查询。所以IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。关于not in和not exists,推荐使用not exists,不仅仅是效率问题,not in可能存在逻辑问题。
1.IN查询包含的值不应过多
建议最多不超过5个,虽然MySQL对于IN做了相应的优化——IN中的常量全部存储在一个数组里面,并对这个数组进行排好序。但是如果数值较多,产生的消耗也是比较大的。
对于in(1,2,3) 这样连续的数值,可以使用between或者使用连接来替换。
2. SELECT语句务必指明字段名称
3. 当只需要一条数据的时候,使用limit 1
这样可以使得EXPLAIN中的type列达到const类型
4. 如果排序字段没有用到索引,就尽量少排序
5. 如果限制条件中其他字段没有索引,尽量少用or
很多时候使用 union all 或者是union(必要的时候)的方式来代替“or”会得到更好的效果
6. 尽量用union all代替union
union和union all的差异主要是前者需要将结果集合并后再进行唯一性过滤操作,这就会涉及到排序,增加大量的CPU运算,加大资源消耗及延迟。 union all的前提条件是两个结果集没有重复数据。
7. 区分in和exists, not in和not exists
区分in和exists主要是造成了驱动顺序的改变,如果是exists,那么以外层表为驱动表,先被访问,如果是IN,那么先执行子查询。所以IN适合于外表大而内表小的情况;EXISTS适合于外表小而内表大的情况。关于not in和not exists,推荐使用not exists,不仅仅是效率问题,not in可能存在逻辑问题。
发表评论
-
Threadlocals and memory leaks in J2EE
2020-03-03 01:10 259Threadlocals are used in J2EE a ... -
RabbitMQ调优系列2 为大量连接进行调整
2019-06-23 22:29 1156RabbitMQ调优系列2 为大量连接进行调整 Some ... -
RabbitMQ调优系列1 调整I/O线程线程池
2019-06-23 22:03 1073RabbitMQ调优系列1 调整I/O线程线程池 Er ... -
MySQL分区表使用场景及特点介绍
2019-05-27 19:05 1013MySQL分区表使用场景及特点介绍 本文旨在介绍MySQL分 ... -
MySQL基础优化
2019-03-24 22:22 342减少使用swap的概率 由参数 vm.swappiness 决 ... -
Hibernate中的持久化对象状态说明
2019-03-18 00:04 477Hibernate框架中为持久化的对象设计了三种状态,处于这三 ... -
redo log
2019-01-18 22:37 535redo log是关系型数据库的核心啊,保证了ACID里的D。 ... -
InnoDB 刷脏页的控制策略
2019-01-18 20:34 1370InnoDB 使用缓冲池(buffer pool)管理内存,缓 ... -
MySQL创建用户与授权方法
2018-12-20 23:10 403一, 创建用户: 命令:CREATE USER 'user ... -
MySQL开发之分页优化
2018-12-20 22:27 509一般刚开始学MySQL的时候,针对小数据量可以这样写 SEL ... -
MySQL参数详解之 Max_connect_errors
2018-12-20 22:00 576max_connect_errors参数是一个与MySQL服务 ... -
Java Web- Changes Between SOAP 1.1 and SOAP 1.2
2015-05-25 15:43 811SOAP Version 1.2 has a number o ... -
术语-揭开Socket
2013-09-27 11:37 931好文转自:http://www.cnblogs.com/goo ... -
术语-Frontend 与 backend
2013-09-16 10:20 1223Front-end and back-end are term ... -
HTTP状态代码含义与其解决方法
2012-11-29 14:04 1054HTTP状态代码含义与其解决方法 转自:http://bugu ... -
微软知识库kb是什么?
2012-10-23 18:53 0您在搜索微软kb(微软知识库 knowledge base)和 ... -
Oracle 9i 、10G 编程艺术之深入数据库体系结构
2011-10-30 16:13 1043第一章 [1.3.3 多版本] Oracle 能充分利用不 ... -
服务器内存UDIMM与RDIMM的区别
2011-09-26 10:12 1579Intel 5500系列至强CPU2009 ... -
如何查看Linux 服务器的负载信息
2011-09-11 10:38 990在Linux系统中,uptime、w、top等命令都会有系统平 ... -
如何查看Linux 服务器的负载信息
2011-09-11 10:37 2748在Linux系统中,uptime、w、top等命令都会有系统平 ...
相关推荐
数据分析师面试题SQL业务机器学习MySQLSQL优化技能和指导视频
此外,定期对索引进行优化和维护也是必要的。可以通过分析查询日志和执行计划来评估索引的使用情况,及时发现和处理潜在的性能问题。同时,定期重建或者重新组织索引,可以进一步提高索引的效率和性能。
MySQL作为一款广泛使用的开源关系型数据库管理系统,其性能优化对于确保应用系统的稳定性和高效运行至关重要。通过对MySQL的优化,不仅能提升系统的响应速度,还能有效减少硬件资源的投入成本。本文将详细介绍MySQL...
MYSQL与SQL优化,自己编写MYSQL与SQL优化.ppt MYSQL与SQL优化.ppt
2、对查询进行优化,应尽量避免全表扫描,首先应考虑在where及orderby涉及的列上建立索引。 3、应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:...
MySQLSQL通用语句
MySQL SQL 优化技巧是数据库管理员和开发者提升数据库性能的关键技能。在本文中,我们将深入探讨一个具体的案例,涉及一个带有INNER JOIN操作的SQL查询优化。该查询在执行时并未达到预期的速度,但在经过一系列分析...
有天发现一个带inner join的sql 执行速度虽然不是很慢(0.1-0.2),但是没有达到理想速度。两个表关联,且关联的字段都是主键,查询的字段是索引。 sql如下: SELECT p_item_token.*, p_item.product_type ...
sql语句练习和疑问解析
掌握这些高级特性对于优化MySQL数据库的性能、提高数据管理效率以及确保数据的准确性和一致性具有重要意义。在实际应用中,应根据具体业务需求灵活运用这些工具,以达到最佳的数据库设计和管理效果。
综上所述,PHP与MySQL的结合使用是Web开发中的常见实践,而“查询组件”则可能是为了提高数据库操作效率和简化代码的一个工具。同时,SQLite的引入为开发提供了更多的灵活性,特别是在轻量级应用或者需要离线存储的...
MySQL SQL语法是数据库管理系统中用于操作数据的核心语言,它提供了创建、更新、查询和管理数据库的命令。在本文中,我们将深入...通过实践和不断学习,你可以更加熟练地运用这些工具,解决各种复杂的数据处理问题。
java课设基于ssm人力人事管理系统源码+mysqlsql数据库脚本文件,该有的功能都有,适合java毕设课设,功能模块: 用户管理:包括登录、注册、用户信息修改等功能。 员工管理:实现员工的增加、删除、修改和查询等...
23. **定期分析和优化表**:使用`ANALYZE TABLE`和`OPTIMIZE TABLE`命令定期更新统计信息和重构表。 24. **批量插入数据**:大量数据插入时,使用批量插入(如`INSERT INTO...VALUES`多行语法)比单条插入更快。 ...
MySQL SQL语法是数据库管理和开发中的基础,用于在MySQL数据库中创建、操作和管理数据。以下是一些关于MySQL SQL语法的关键知识点: ...记住,实践是学习SQL的最佳途径,尝试在实际环境中应用这些语句将加深理解。
MySQLSQL经典50题,R语言_tidyverse_解法_SQL50
- MySQL 数据库的 SQL 语句不区分大小写,但为了增强代码的可读性,建议将关键字使用大写。 - 在同一个数据库服务器中,不能创建两个名称相同的数据库,否则将会报错。 - 如果尝试删除一个不存在的数据库,系统会...
资源名称:mysql sql语句大全资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
MySQL是一个关系型数据库管理系统,ySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。...