首页 > 其他分享 >关于查询优化的一些总结

关于查询优化的一些总结

时间:2024-04-09 21:13:08浏览次数:21  
标签:总结 union 查询 索引 使用 query 优化

一、程序优化
热点数据使用缓存
数据库读写分离
二、数据库方面的优化
1、数据库设计优化
如果单表数据量过大,可以根据业务来做分表
数据库表可以做一些字段冗余,可以减少连表查询,提升查询效率
2、Sql语句优化
2.1.首先定位慢查询
开启慢查询日志 mysql
slow_query_log:是否开启慢查询
slow_query_log_file:慢查询日志存储路径
long-query-time:慢查询阈值,当查询时间大于阈值时会记录到日志
第三方监测工具
2.Sql优化
1、避免使用select *,只查需要的列
2、如果不需要去重尽量使用union all(union会去重,遍历耗时)
3、子查询改用连表查询(子查询会生成临时表)
4、深分页查询可以将上一页最大Id作为where条件
5、开启执行计划查看查询是否走索引,根据执行计划设置合理的索引
索引如何设置:根据 where条件+group by条件+order by条件来设置组合索引,组合索引字段顺序根据查询字段热点来
避免索引失效:
1)遵循最佳左前缀法则:如果使用组合索引,查询条件必须按组合索引字段排序
2)不在索引列上做任何计算操作
3)使用like时不要以通配符开头('%xx')
4)避免使用is not null或者!=(数据表字段null可以改用0代替)
5)存储引擎不能使用索引中范围条件右边的列
6)不要使用OR(可以改用union all)

标签:总结,union,查询,索引,使用,query,优化
From: https://www.cnblogs.com/daiwk/p/18124820

相关文章

  • 【数据结构 | 并查集】维护元素分组信息,支持高效合并集合、查询元素所在集合
    文章目录并查集概述引入并查集的实现存储方式Union-Find抽象基类两种实现思路基本实现基于QuickFind思路基于QuickUnion思路优化基于size的优化基于rank的优化find优化路径压缩路径分裂路径减半总结并查集概述并查集(DisjointSetUnion,简称并查集),也叫......
  • LeetCode题练习与总结:排列序列--60
    一、题目描述给出集合 [1,2,3,...,n],其所有元素共有 n!种排列。按大小顺序列出所有排列情况,并一一标记,当 n=3时,所有排列如下:"123""132""213""231""312""321"给定 n和 k,返回第 k 个排列。示例1:输入:n=3,k=3输出:"213"示例2:输入:n=4,k=......
  • ES(ElasticSearch)基础查询语法
    在ES中使用正确有意义的查询语句是很重要的,可以方便、快速的从大量数据中找到想要的数据。所以写好一个查询语句是必不可少的。ES分词器分词器是ES搜索引擎的核心特点,合理了解并使用可以发挥ES最大的效率。后面很多查询也有关,所以应该重点了解分词器。对于存入(Index)中的各个......
  • 一个关于编译器优化选项问题的解决
    因为当前项目单片机容量不够使用,打算开启编译器优化,结果在使用KEIL编译器优化后,程序在发送Modbus数据时,程序直接跑飞了先说结论:最后发现是局部变量指针作为了DMA的内存地址参数,导致当DMA连续搬运数据时,实际那个局部变量已经被释放,导致DMA搬运数据的过程中出现错误,但是为什么没优......
  • 面试中数据结构与算法——知识点最全总结(学完可应对一线大厂)
    各大厂历年高频面试题系列,以下为部分内容不包括全部:双指针类面试题括号类面试题回文类面试题递推类面试题树型dp类面试题区间dp类面试题背包dp类面试题排序相关面试题常见贪心面试题常见图算法面试题子数组类面试题子序列类面试题二分类面试题bfs与dfs类面试......
  • 单元测试总结
    单元测试是软件开发中的一种测试方法,用于验证代码中的各个单元(通常是函数、方法或类)是否按照预期进行工作。在编写单元测试时,开发人员编写一系列测试用例,针对每个单元执行这些测试用例,并检查其输出是否符合预期。在此次任务中,我完成了测试一次判定覆盖,判定覆盖是指每个判定至少为......
  • Qt 项目编译流程总结
    通过VS来开发Qt项目的过程中,整个Qt项目的编译需要如下几个过程:Uic---->Rcc---->Moc---->预处理----->编译----->汇编----->链接对比普通的C++项目,Qt多了Uic---->Rcc---->Moc这三步。现在对QT项目所多出的三个编译过程进行分析:一、Uic:QtUserInte......
  • MyBatis中如果某个查询不希望使用缓存,可以在映射文件中的select语句上设置flushCache=
    <selectid="xmlGetGuaranteeCount"databaseId="sqlserver"resultType="Integer"flushCache="true"><![CDATA[SELECTcount(appisparea.ID)FROMT_APP_ISP_ARE......
  • sql server在高并发状态下同时执行Select查询与Update更新操作时的死锁问题
    最近在项目上线使用过程中使用SqlServer的时候发现在高并发情况下,频繁更新和频繁查询引发死锁。通常我们知道如果两个事务同时对一个表进行插入或修改数据,会发生在请求对表的X锁时,已经被对方持有了。由于得不到锁,后面的Commit无法执行,这样双方开始死锁。但是select语句和upda......
  • 美国新冠疫情日数据正在更新中!可以下载「.xls」2020-2024年美国疫情大数据查询
    美国新冠疫情日数据,数据更新至2024/4/97:06:08美国新冠疫情昨日数据正在更新:新增是923例。再看一下各州吧:New-York新冠疫情昨日新增是:504发一个美国的新增总图:15个月的折线趋势图2020-2024年美国疫情大数据查询及下载EXCEL表:发一个20天的美国疫情数据表下......