首页 > 数据库 >SQL调优

SQL调优

时间:2023-07-14 13:44:55浏览次数:50  
标签:语句 JOIN 使用 查询 索引 避免 调优 SQL

1. 索引优化: 确保适当的索引在数据库表上创建,以加快查询性能。分析查询语句,确定可能需要的列和联合索引,并避免过多或不必要的索引。
2. 优化查询语句: 优化查询语句的写法,避免全表扫描和不必要的数据检索。使用合适的WHERE子句、JOIN语句和子查询,以提高查询效率。
3. 避免使用SELECT * : 明确指定需要检索的列,而不是使用SELECT*来检索所有列。这可以减少网络传输的数据量,提高查询性能。
4. 合理使用连接:在使用JOIN连接表时,选择合适的连接类型(如INNER JOIN、LEFT JOIN、RIGHT JOIN等)以及适当的连接顺序,以避免不必要的数据重复和性能问题。
5. 使用适当的数据类型: 选择适当的数据类型来存储数据,避免存储过多的数据或使用过大的数据类型。这可以减少磁盘空间和内存占用,并提高查询和排序的效率。
6. 分页优化: 对于分页查询,使用合适的LIMIT或ROWNUM来限制返回的行数,并避免在查询中使用OFFSET。OFFSET会导致数据库跳过大量行,对性能造成负面影响。
7. 避免使用函数和操作符: 在查询条件中避免使用函数和操作符,尽可能在查询之前处理好数据,以提高查询性能。
8. 定期执行表维护: 定期执行表的优化和维护操作,如重新生成索引、收集统计信息、清理无用数据等,以保持表的性能和响应时间。
9. 分区和分表: 对于大型表,考虑使用分区或分表来分割数据,提高查询和维护性能。
10. 监视和调整数据库配置: 监视数据库的配置参数和性能指标,如缓冲区大小、连接池大小、并发连接数等,并进行适当的调整以满足实际需求。

第一点和第二点是开发中常用到的,索引优化其实就是一些索引规约,该如何创建索引、对哪些字段应当创建索引等,具体可看我的MySQL规约中的索引规约;对于全表扫描,往往是因为where语句不当,或者字段值设置不当,导致在查询时不走索引,当然,like语句或者in(not in)语句也常常导致全表扫描,这也是我们在sql调优中应当关注的方向。

标签:语句,JOIN,使用,查询,索引,避免,调优,SQL
From: https://www.cnblogs.com/lhcc924/p/17553469.html

相关文章

  • SQLServer批量修改和插入
    SQLServer批量修改或插入场景今天在工作中遇到这么一个场景,我需要根据条件对表A做批量更新或插入。因为条件比较复杂,所以我使用了临时表B,先把需要更新或插入的数据查询出来放入临时表。然后更新表A的某字段,更新条件是A.id=B.id,更新效果是若记录存在表A中,则更新表A的字段,若不......
  • Mysql主从复制
    主从复制slave会从master读取binlog来进行数据同步1.复制的基本原理master将改变记录到二进制日志(binarylog),这些记录过程叫做二进制日志事件,binarylogeventsslave将master的binarylogevents拷贝到它的中继日志(relaylog)slave重做中继日志中的事件,将改变应......
  • docker 配置MySQL主从复制
    启动mysql容器(配置主服务器)dockerrun-p3307:3306--namemysql-master\-v/tmp/mysql/mysql-master/log:/var/log/mysql\-v/tmp/mysql/mysql-master/data:/var/lib/mysql\-v/tmp/mysql/mysql-master/conf:/etc/mysql\-eMYSQL_ROOT_PASSWORD=root\-dmysql:5.7......
  • docker 配置MySQL主从复制
    启动mysql容器(配置主服务器)dockerrun-p3307:3306--namemysql-master\-v/tmp/mysql/mysql-master/log:/var/log/mysql\-v/tmp/mysql/mysql-master/data:/var/lib/mysql\-v/tmp/mysql/mysql-master/conf:/etc/mysql\-eMYSQL_ROOT_PASSWORD=root\-dmysql:5.7......
  • docker 配置MySQL主从复制
    启动mysql容器(配置主服务器)dockerrun-p3307:3306--namemysql-master\-v/tmp/mysql/mysql-master/log:/var/log/mysql\-v/tmp/mysql/mysql-master/data:/var/lib/mysql\-v/tmp/mysql/mysql-master/conf:/etc/mysql\-eMYSQL_ROOT_PASSWORD=root\-dmysql:5.7......
  • docker 配置MySQL主从复制
    启动mysql容器(配置主服务器)dockerrun-p3307:3306--namemysql-master\-v/tmp/mysql/mysql-master/log:/var/log/mysql\-v/tmp/mysql/mysql-master/data:/var/lib/mysql\-v/tmp/mysql/mysql-master/conf:/etc/mysql\-eMYSQL_ROOT_PASSWORD=root\-dmysql:5.7......
  • docker 配置MySQL主从复制
    启动mysql容器(配置主服务器)dockerrun-p3307:3306--namemysql-master\-v/tmp/mysql/mysql-master/log:/var/log/mysql\-v/tmp/mysql/mysql-master/data:/var/lib/mysql\-v/tmp/mysql/mysql-master/conf:/etc/mysql\-eMYSQL_ROOT_PASSWORD=root\-dmysql:5.7......
  • docker 配置MySQL主从复制
    启动mysql容器(配置主服务器)dockerrun-p3307:3306--namemysql-master\-v/tmp/mysql/mysql-master/log:/var/log/mysql\-v/tmp/mysql/mysql-master/data:/var/lib/mysql\-v/tmp/mysql/mysql-master/conf:/etc/mysql\-eMYSQL_ROOT_PASSWORD=root\-dmysql:5.7......
  • #SQL常见错误信息表 mysql导入数据出错常见错误
    mysql的出错代码表,根据mysql的头文件mysql/include/mysqld_error.h整理而成。错误之处,请大家指正。1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数据库文件导致删除数据库失败1010:不能删除数据目录导致删除数据库......
  • PostgreSQL 分组汇总(一)
    聚合函数聚合函数(aggregatefunction)针对一组数据行进行运算,并且返回单个结果。PostgreSQL支持以下常见的聚合函数:AVG-计算一组值的平均值。COUNT-统计一组值的数量。MAX-计算一组值的最大值。MIN-计算一组值的最小值。SUM-计算一组值的和值。STRING_AGG-连接一组字符串。......