首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQL索引优化

序言 数据库的优化方法有很多种,在应用层来说,主要是基于索引优化。...本次秘笈根据实际的工作经验,在研发原来已有的方法的基础上,进行了一些扩充,总结了基于索引SQL语句优化的降龙十八掌,希望有一天你能用其中一掌来驯服客服业务中横行的‘恶龙’ 总纲 建立必要的索引 这次传授的降龙十八掌...运行时逐行计算得到的,因此它不得不进行表扫描,而没有使用该列上面的索引;如果这些结果在查询编译时就能得到,那么就可以被SQL优化优化,使用索引,避免表扫描,因此将SQL重写如下: select *...最后决定SQL优化功力的因素就是对ORACLE内功的掌握程度了。...另外,值得注意的是:随着时间的推移和数据的累计与变化,ORACLE对SQL语句的执行计划也会改变,比如:基于代价的优化方法,随着数据量的增大,优化器可能错误的不选择索引而采用全表扫描。

1.1K80
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    性能优化-索引优化SQL的方法

    4、索引优化SQL的方法 1、索引的维护及优化(重复及冗余索引) 增加索引会有利于查询效率,但会降低insert,update,delete的效率,但实际上往往不是这样的,过多的索引会不但会影响使用效率...,同时会影响查询效率,这是由于数据库进行查询分析时,首先要选择使用哪一个索引进行查询,如果索引过多,分析过程就会越慢,这样同样的减少查询的效率,因此我们要知道如何增加,有时候要知道维护和删除不需要的索引...2、如何找到重复和冗余的索引 重复索引: 重复索引是指相同的列以相同的顺序建立的同类型的索引,如下表中的 primary key和ID列上的索引就是重复索引 create table test( id...: 冗余索引是指多个索引的前缀列相同,或是在联合索引中包含了主键的索引,下面这个例子中key(name,id)就是一个冗余索引。...4、索引维护的方法 由于业务变更,某些索引是后续不需要使用的,就要进行删除。

    72720

    MySQL索引SQL语句优化

    优化 1、前导模糊查询不能使用索引,   如name like ‘%静’ 2、Union、in、or可以命中索引,建议使用in 3、负条件查询不能使用索引,可以优化为in查询,   其中负条件有!...在字段上计算不能命中索引, 10、强制类型转换会全表扫描,   如果phone字段是varcher类型,则下面的SQL不能命中索引。...13、建立索引的列不能为null,使用not null约束及默认值 14、利用延迟关联或者子查询优化超多分页场景, MySQL并不是跳过offset行,而是取offset+N行,然后放弃前offset...行,返回N行,那当offset特别大的时候,效率非常低下,要么控制返回的总数,要么对超过特定阈值的页进行SQL改写。...SQL可以采用如下的写法:select id,name from product where id> 866612 limit 20。

    1.6K10

    MySQL SQL索引优化总结

    专栏持续更新中:MySQL详解 首先我们需要知道MySQL主要是从以下3个方面进行优化SQL语句和索引 应用优化(引入缓存、连接池) 配置参数优化 一、SQL语句和索引优化 当数据量比较大,若SQL...语句写的不合适,会导致SQL的执行效率低,我们需要等待很长时间才能拿到结果 针对性优化的时候,若数据量太大,可通过limit分页 explain分析的时候可能出现以下问题: 没有用索引 用多列索引没有用到第一列...,导致没用到索引 联合查询的大小表设置不合理,导致索引没用上(小表是整表查询,大表才用索引) 多表查询不用in(产生中间表),用外连接替代带in子查询的过程,合理使用索引 二、应用优化 除了优化SQL索引...对于MySQL Server端的优化,主要指的是MySQL Server启动时加载的配置文件(my.ini或my.cnf)中配置项的优化 1....自适应哈希索引 由于hash索引的生成和维护也是耗费性能的,通过以下命令查看自适应哈希索引搜索的频率低于使用二级索引树搜索的频率: show engine innodb status\G 如果使用自适应哈希索引搜索的频率较低

    20450

    SQL优化 MySQL版 – 索引分类、创建方式、删除索引、查看索引SQL性能问题

    ,我要删除的索引名字为name_index on 它属于 tb 表 查询索引 语法:show index from tb; 解析,看一下tb这张表的索引SQL性能问题 1.分析SQSL的执行计划 通过...explain,可以模拟SQL优化器执行SQL语句,从而让开发人员知道自己编写的状况; 查询执行计划:explain+SQL语句; 举例:explain select * From bbs_detail...,看一下执行结果: 我会在下篇文章详细介绍并且实战优化,在这里各位仅做了解即可; 解说: id:顾名思义就是查询编号 select_type:查询类型 table:你在操作哪一张表 type:类型 key...key_len:实际使用索引的长度; ref:表和表之间的引用关系; rows:通过索引查询到的数据量; Extra:额外的优化信息 2.MySQL查询优化器会干扰我们的优化 我在前几章说过有关为什么会干扰我们优化好的...SQL语句,因为它内置有一个优化器,它会擅自篡改我们优化好的SQL语句;

    1.2K10

    MySQL数据库:SQL优化索引优化

    ,也会导致索引失效: 因为SQL只有在运行时才会解析局部变量,但优化程序不能将访问计划的选择推迟到运行时;它必须在编译时进行选择。...10、利用索引下推减少回表的次数: 索引下推是Mysql5.6版本推出的功能,用于优化查询。...一个表的索引数较好不要超过5个。 14、SQL 性能优化 explain 中的 type:至少要达到 range 级别,要求是 ref 级别,如果可以是 consts 最好。...二、SQL语句优化: 1、减少请求的数据量: (1)只返回必要的列,用具体的字段列表代替 select * 语句 MySQL数据库是按照行的方式存储,而数据存取操作都是以一个页大小进行IO操作的,每个...14、写出统一的SQL语句: 对于以下两句SQL语句,很多人都认为是相同的。不过数据库查询优化器则认为是不同的,虽然只是大小写不同,但必须进行两次解析,生成2个执行计划。

    1.3K20

    MySQL优化方案(一)优化SQL脚本与索引

    本文记录MySQL优化方案 ,梗概如下: 优化SQL 优化索引 (一)优化SQL 1、通过MySQL自有的优化语句 优化SQL语句,通过脚本命令来了解执行率较低的语句,显示一下状态等。...SHOW命令 SHOW Status可以了解SQL的执行频率。可以显示日志,显示特定的数据库、表、索引以及进程还有权限表中的信息等等。 ?...EXPLAIN 通过EXPALIN命令可以分析低效的SQL执行计划。...③ORDER BY优化 任何的在ORDER BY语句的非索引项或者是有计算表达都将降低查询速度。 可以rewrite ORDER BY语句使用索引。 绝对避免在ORDER BY中使用表达式。...(二)优化索引 MySQL的索引是在存储引擎层面实现的,并不是在服务器层面实现的。所以每一种的存储引擎的索引都是不是完全相同的。 MySQL目前提供了一下4种索引(概念)。

    2.4K70

    SQL Server使用缺失索引建议优化非聚集索引

    view=sql-server-ver16 简介 缺失索引功能是一种轻量工具,用于查找可显著提高查询性能的缺失索引。 本文介绍如何使用缺失索引建议来有效地优化索引并提高查询性能。...缺失索引建议并不是完全按照建议创建索引的规定。 备注 Azure SQL 数据库提供自动索引优化。...自动索引优化使用机器学习通过 AI 从 Azure SQL 数据库中的所有数据库横向学习,并动态改进其优化操作。 自动索引优化包括一个验证过程,以确保工作负载性能通过创建的索引能得到显著改善。...对于 Azure SQL 数据库,请考虑实现自动索引优化。 在创建索引之前查看缺失索引功能的限制以及如何应用缺失索引建议,并修改索引名称以匹配数据库的命名约定。...view=sql-server-ver16 使用缺失索引建议优化非聚集索引 sys.dm_db_missing_index_columns (Transact-SQL) sys.dm_db_missing_index_details

    17410

    SQL审核 | SQLE 支持索引优化

    1.2112.0-pre2 SQLE Release Notes SQL审核工具 SQLE 1.2112.0-pre2 于今天发布。...仅可用新功能试用,不保证平滑升级 一、SQLE 项目介绍 爱可生开源社区的 SQLE 是一款面向数据库使用者和管理者,支持多场景审核,支持标准化上线流程,原生支持 MySQL 审核且数据库类型可扩展的 SQL...sqle-docs-cn/3.modules/3.7_auditplugin/auditplugin_development.html 二、更新列表 Release Notes 特性 [#55] 新增索引优化功能...,目前支持三星索引与多表关联查询索引建议,详细介绍:https://actiontech.github.io/sqle-docs-cn/3.modules/3.5_auditworkflow/index_optimization.html...[#129] 创建工单录入SQL时支持输入联想,补全关键字,提高录入效率

    36320

    SQL Server 性能优化之——重复索引

    概述 很多人都知道索引在数据库上的是有利有弊的。像其他主流商业数据库一样SQL Server允许在一个列上重复创建索引。...因为SQL Server没有限制创建重复索引的数量,只是限制数据库的一个表上最多可以创建999重复索引,所以这就增加了数据库中存在重复索引的可能性。...表的列上存在重复索引的话,可能会明显的损害数据库性能,因为SQL Server必须分别维护每一个重复索引。此外,SQL Server优化查询语句时,查询优化器也会考虑这个问题,这就导致一系列性能问题。...1) 使用SQL Server Management Studio (SSMS,但是在SQL Server有很多数据库,数据库中又有大量表和索引的情况下,使用SSMS并不是一个快捷的方式。...2) 使用sp_helpindex查找重复索引 3) 使用SQL Server系统目录,可以在SQL Server数据库上使用和开发脚本查找重复索引,这是一个比较方便并灵活的方式。

    2.3K90

    SQL优化案例-分区索引之无前缀索引(六)

    无前缀索引:分区索引不包含分区字段就叫无前缀索引,那么什么时候用无前缀索引和前缀索引呢?...SQL文本如下,跨分区查询,分区字段post_date(为保证客户隐私,已经将注释和文字部分去掉): 跨30个分区执行了6分钟。...='1' AND CD_FLAG='0'); 执行计划: 20.1.jpg 查看索引,包含了分区字段,且少了TRAN_BRANCH列。...30个分区查询需要8秒钟完成,IND_TRAN_CORRECTION_ABS_TRAN索引还是有点问题的,大家能看出来哪有问题吗?...当查询跨分区的时候,且where条件中包含分区字段,我们只需要在非分区字段建立本地索引(本地的组合索引),分区字段会自行的进行分区裁剪;如果查询不跨分区那么就需要建立包含分区字段的前缀索引,这时候能过滤掉大量的不必要的数据

    59820

    如何巧用索引优化SQL语句性能?

    为什么在 MySQL数据库中,一条慢查询只要添加上合适的索引,查询速度就能提升一个档次?对于 MySQL,如何巧用索引优化SQL语句性能?需要注意什么问题?...解决问题之前最重要且最难的事情是定位问题,因此,我们需要先定位出慢 SQL,这样才能对症下药进行优化,那么,如何定位慢 SQL呢?如何判断慢 SQL?...因此,我们可以判断这条 SQL为慢 SQL(耗时大于 100ms),可以考虑给name创建一个索引优化:给 name字段增加一个“index-name”索引,信息如下:从执行计划可以看出:查询使用了“...毫秒然后查看日志目录,指令如下:sql复制代码SHOW VARIABLES LIKE 'slow_query_log_file';索引优化在使用索引的时候,需要注意的一些事项和使用技巧:聚簇索引首先需要判断...,假设一条数据的大小是1K,因此叶子节点可以存放 16Kb/1K = 16条数据,所以3层的B+树可以存放 1170 * 1170 * 16 = 21902400行记录总结本文从索引角度来分析如何优化SQL

    16610

    SQL极致优化案例:利用索引特性进行maxmin优化

    极致优化探究 – 索引原理 继续分析该SQL, 发现其实从逻辑上来说,SQL仅需要时间列CREATED的最小值,至于其他值是什么并不重要。那么是否有一种方法可以只取出最小值,而忽略掉其他数据呢?...简化版取min/max索引优化 为了更好理解,我们把问题简化成取表里CREATED最小值(或者最大值)。...优化结果 为生产SQL创建CASE WHEN索引并改写SQL后逻辑读降为75,并没有走上最优的INDEX RANGE SCAN (MIN/MAX)执行计划,这是因为这种写法MAX(T1.CREATED)...最终完成了一个高频SQL从2117到3的极致优化,提升达数百倍。 ?...经优化,该SQL性能提升数万倍。 关于作者 刘娣,云和恩墨技术顾问,多年数据库服务经验,主要服务于移动经营商和券商,具有丰富的数据库性能优化、故障处理经验,擅长SQL审核和性能优化

    1.7K20

    数据库性能优化-索引sql相关优化

    回表问题,请移步:https://blog.csdn.net/csdn___lyy/article/details/81329020 并不是所有索引对查询都有效,SQL是根据表中数据来进行查询优化的...----  二、优化相关( 仅针对InnoDB存储引擎所支持的BTree索引) 1.索引的设计原则 选择唯一性索引  唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。...记住, 索引只能告诉你什么存在于表中, 而不能告诉你什么不存在于表中. 3.sql优化 尽量减少访问数据库次数,将一些逻辑放在后台代码中处理 在不影响业务的情况下,整合简单,无关联和有关联的数据库访问...不要用存储过程了,缺点太多了,完全可以由缓存或者其他方式代替 另外:在优化sql的同时,着重优化系统中的慢查询sqlsql本身层面优化、业务优化后的sql优化等),慢查询sql才是系统的瓶颈所在...通过key_len为20判断都是用了索引,因为mysql会优化sql语句,将did与cid的顺序进行了排序后为:where aid = 1 and bid = 2 and cid = 3 and did

    1.8K30

    从一次sql优化谈mysql索引

    两台机器都出现慢sql,然而这个时候还不能断定就是我们的sql有问题,出现慢sql有可能是数据库抖动导致读延迟比较高,也有可能sql确实存在优化空间。接着去看一下数据库的监控: ?...2:数据现状 目前退货单表有千万级别数据,索引基本该有的都有,从日志埋点可以看到有些查询竟然用36S: ? 二、分析与优化 1:老sql分析 mybatis中sql片段: <!...我们比较关注的是第3,4步,先解析并生成执行计划,然后执行查询,所以一般对于sql优化也基本基于第三步进行。 接着我们先看几个概念: 聚簇索引 ?...sql优化 根据具体的查询场景和诉求,对sql进行改造,或者适当调整索引,从而短期提供单表高性能响应,并且此方案没有额外的机器成本,只需要对底层sql检索语句进行优化,当然这也需要更高的认知成本...对于以上几种查询性能优化方案,正所谓仁者见仁智者见智,不同的场景、不同的团队思考为题的角度和侧重点不尽相同,具体选择哪一种方式需要视场景而定,但是sql优化是短期内并且是首先需要考虑的优化方案。

    1.1K62
    领券