首页 > 数据库 >数据库调优

数据库调优

时间:2023-05-12 16:00:13浏览次数:26  
标签:数据库 查询 索引 调优 哈希 sql

首先在调优之前,必然是因为某一个sql查询慢,影响性能,才会存在调优。
数据库调优之前,测试sql真正的响应时间,需要排除数据库的缓存干扰,因为缓存的存在,并不能真正的显示查询出sql的响应时间

 

  • 使用执行计划Explain,分析sql在数据库的执行情况

type字段:这条执行计划中的连接类型,all全表扫描,index索引扫描,range范围扫描等
rows: 表示该条执行计划中需要扫描的行数
Extra: 表示该条执行计划中的额外信息,通常会显示使用了哪个索引或者排序方式等等

  • 使用覆盖索引

就是select的数据列只用从索引中就能够取得,不必从数据表中读取,换句话说查询列要被所使用的索引覆盖
要求查询的字段比较少

  • 联合索引

查询常见的字段时,并存在多个,可以将多个字段一起建立联合索引,可以避免全表扫描

  • 遵循最左匹配原则

在进行模糊查询的时候,都尽量遵循 like ‘字段%’;这样查询能利用到索引

  • 索引字段过长怎么处理

1.使用前缀索引 :前缀索引是指只对字段的前面几个字符建立索引,而不是对整个字段建立索引。这样可以减少索引占用的内存,提高索引效率,从而优化数据库的性能。
2.使用哈希索引:哈希索引是指对字段进行哈希计算后建立的索引。由于哈希索引不存储实际的值,而是存储哈希值,因此可以节省索引占用的内存。但是哈希索引只能用于等值查询,而不能用于范围查询。
3.使用多列索引:多列索引是指对多个字段建立的联合索引。当唯一索引字段过长时,可以考虑将其与其他字段一起建立索引,从而减少索引占用的内存,提高索引效率。

  • 避免查询的时候,一些字段进行函数操作

这样会导致索引失效

  • 查询数据的时候,避免字段的隐式类型转换

字符类型的数字,查询的时候,使用数字类型,就默认会进行隐式转换
select * from t where id = 1 ,如果id是字符类型的,1是数字类型的

标签:数据库,查询,索引,调优,哈希,sql
From: https://www.cnblogs.com/hu-kang/p/17394438.html

相关文章

  • 【大揭秘】SQL与NoSQL数据库的优缺点全面对比!一篇文章帮助你轻松解决选择困难症!
    从分析师、工程师到IT决策者,许多人都熟悉关系数据库管理系统(rDBMS)和用于与它们交互的SQL(SQL)。虽然这些术语指的是一个几十年的范式,仍然是一个广泛使用的标准,今天的纯粹的多样性和数据库系统的深度可以令人眼花缭乱。更重要的是,不断增长的各种数据(尤其是非结构化数据数据)......
  • JDBC 数据库连接池之Driud
    1数据库连接池简介数据库连接池是个容器,负责分配、管理数据库连接(Connection)它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏好处资源重用提升系统响应速度避免......
  • 7.数据库备份还原
    5.数据库备份还原https://blog.csdn.net/zhang41228/article/details/79893230   Linux下SqlServer的备份和还原 Eagle昊2018-04-1110:58:316760收藏8分类专栏:数据库Linux学习笔记版权 数据库同时被2个专栏收录8篇文章0订阅订阅专栏 Linux学习笔......
  • 数据库修改端口
    数据库修改端口  1.修改数据库默认端口(自定义为5500)#修改Sqlserver默认端口为5500/opt/mssql/bin/mssql-confsetnetwork.tcpport5500 2.重启Sqlserver服务systemctlrestartmssql-server 3.防火墙放行修改的端口(云服务器添加入站规则即可)firewall-cmd--zo......
  • Entity FrameWork 6 与sqlserver数据库建立连接
    1、新建一个控制台项目  2、添加EF6   3、新建2个表并建立外联关系department:departmentId为主键 person:id为主键    4、连接sqlserver数据库             ......
  • 数据库值转换
    SELECTCONVERT(INT,25.65)--25selectCONVERT(decimal,'123.45')--123selectCONVERT(decimal(9,2),'123.45')--123.45SELECTCONVERT(VARCHAR(25),GETDATE())--0922202110:31PMSELECTCONVERT(VARCHAR(24),GETDATE(),120......
  • java基于springboot+html的学生就业管理系统的设计与实现,附源码+数据库+文档,包安装调
    1、项目介绍本系统是利用现代化的计算机网络技术将传统信息宣传方式整合,按照实践过程设计完成的。同时完善服务,初步设计一个学生就业管理系统平台以利于相关的事务操作。为了使系统在各项管理中发挥更大的作用,实现计算机信息化高效的管理,现将开发目标功能需求介绍如下:(1)管理员模......
  • 数据库完整性
    完整性概述数据库的完整性是指数据库的正确性、一致性、相容性正确性:数据库的数据符合语义约束一致性:数据间的逻辑关系是正确的,从一个一致性状态转移到另一个一致性状态相容性:同一事物的两个数据应当是一致的约束的分类从约束的状态分类:可以分为静态约束和动态约束静态约......
  • 数据库基础
    1.数据库mysql数据库使用和可视化关系型数据库mysql使用:开启服务:netstartmysql登录:mysql-uroot-p关闭服务:netstopmysql图形化MySQL数据库管理工具:SQLyog安装后的秘钥:cr1738d8120df-a5c3-4989-8f47-5afc79c56e7c2.操作数据库操作数据库>操作数据库表>操......
  • Python学习之二:不同数据库相同表是否相同的比较方法
    摘要昨天学习了使用python进行数据库主键异常的查看.当时想我们有跨数据库的数据同步场景.对应的我可以对不同数据库的相同表的核心字段进行对比.这样的话能够极大的提高工作效率.我之前写过很长时间的shell.昨天跟着同事开始学python.感觉的确用python能够节约大量的时间.......