昨天碰到一个很有意思的问题,一个sql 语句,加上 SoftUseLine like '%OQC%' 之后,速度就特别慢。去掉该条件之后,速度就快起来了。  查看sql 语句的执行情况,发现加上那个查询条件之后,SoftWareDetailInfo表的逻辑读取变成了1300374 次,        可是这个查询字段明明已经加上Index_SoftWar
转载 2024-02-23 10:56:32
51阅读
1 尽量避免使用select * 用具体的字段列表代替 *2 搜索单条数据 后面加上limit 13 使用like模糊查询的时候 %关键词% 索引失效 可使用%关键词4 避免使用!= > < in not in 操作符 索引失效 全盘扫描5 便面使用or条件 索引失效 可使用union all代替6 尽量避免使用表达式、函数等操作作为查询条件7 尽量避免大事务操作,提高系统并发能力8
转载 2024-03-18 09:07:23
111阅读
MySQL相关基础与SQL索引优化分析一、MySQL基本知识1. MySQL简介1.1 什么是MySQL MySQL是一个开源的关系型数据库,由MySQL AB公司开发,目前已被Oracle收购。其遵循GPL协议,用户可根据需求定制化开发资金的MySQL。MySQL可移植性高,支持多种语言,例如:Java、PHP、C++、Python、Perl、Eiffel、Rubby等。其使用标准的SQL数据
转载 2024-07-05 14:28:40
64阅读
原标题:Oracle SQL查询时索引失效原因大家都知道,SQL查询性能和索引关系密切;数据库表中创建了索引,在数据的增删改中,会消耗更多的资源。因此,创建了索引是为了查询速度更优,但有时候查询时索引并没有起到作用。今天我们就主要谈谈索引失效的原因:当你运用 SQL 语言,向数据库发布一条查询语句时, Oracle 将伴随产生一个“执行计划”,也就是该语句将通过何种数据搜索方案执行,是通过全表扫描
接第一篇索引失效分析: http://grefr.iteye.com/blog/1988446 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。  2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如
转载 2024-07-29 17:34:19
87阅读
问题场景:今天在公司遇到一个紧急的bug,弄了很久,请教了公司的大神,各种实验才解决这个问题。 这个bug就是查询一个月已完成的订单,查询订单系统超时,我开始大致查了下,原因就是数据量太大了导致查询时间过长超过了30s。 先说说我这个项目的数据量级一天两万单,一个月是六十多万订单,项目运行一年多,表里大概是五百多万条订单。 于是我开始优化,很多人说优化sql,没错我开始也这么想,可是我看了下sql
今天一个同事突然问我索引为什么失效。说实在的,失效的原因有多种:但是如果是同样的sql如果在之前能够使用到索引,那么现在使用不到索引,以下几种主要情况:1. 随着表的增长,where条件出来的数据太多,大于15%,使得索引失效(会导致CBO计算走索引花费大于走全表)2. 统计信息失效      需要重新搜集统计信息3. 索引本身失效&nb
一、避免索引失效原则一般而言数据库表中字段都应该是not null,设置非空,即使存在空值,可以设置默认值替代,这样方便使用索引,优化性能sql优化是一种概率层面的优化,不是百分百的,至于是否使用了我们的优化,需要通过explain进行推测 因sql优化器可能会进行修改执行的sqlin可能导致失效不要在索引上进行任何操作(计算,函数,类型转换等 ),否则索引失效复合索引 复合索引满足最佳左前
尽量全值匹配建表语句:CREATE TABLE `t_logs` ( `id` int(10) NOT NULL AUTO_INCREMENT, `action` varchar(100) DEFAULT NULL, `data` varchar(2000) DEFAULT NULL, `author_id` int(10) DEFAULT NULL, `ip` varchar(20) DEFAU
最近,在脉脉上看到一个楼主提出的问题:MySQL数据量大时,delete操作无法命中索引;并且还附上了相关案例截图。最终,楼主通过开启MySQL分析优化器追踪,定位到是优化器搞的鬼,它觉得花费时间太长。因为我这个是测试数据,究其原因是因为数据倾斜,导致计算出的数据占比较大、花费时间长。 大家要记住一点,一条SQL语句走哪条索引是通过其中的优化器和代价分析两个部分来决定的。所以,随着数据
转载 2023-10-28 10:48:17
185阅读
sql优化之索引失效我们在自己建立数据索引时,有时候索引失效,导致数据库性能下降,那么,我们如何避免索引失效呢,就要先知道什么时候索引失效。并且避免它,对它进行优化,提高数据库性能。1.不遵守最佳作前缀法导致索引失效1.1全值匹配: 建立一个多值索引:-- create index ind_x_name_department_age on employee (name,depart_id,ag
转载 2023-12-19 20:33:31
67阅读
## SQL Server索引失效简介 在SQL Server数据库中,索引是提高查询性能的关键因素之一。然而,有时候由于不正确的索引设计或者其他因素,索引可能会失效,导致查询性能下降。本文将介绍SQL Server索引失效的常见原因,并提供相应的代码示例进行解释。 ### 1. 索引失效的常见原因 #### a. 数据量过小 当表中的数据量非常小的时候,SQL Server可能会选择不使
原创 2023-12-09 06:10:25
284阅读
测试is null和is not null能否利用索引 --创建测试数据 create table student ( id int primary key not null, sid int ) --创建索引 CREATE INDEX STU_SID ON STUDENT (SID ASC ) PCTFREE 10 ALLOW REVERSE
转载 2024-06-14 15:23:44
30阅读
在平时的工作中,在对公司慢查询日志做优化的时候,很多时候可能是忘了建索引,这时候很简单,加个索引就行了。但是有几种情况就不是简单加索引能解决了:超大分页在慢查询日志中发现了一些超大分页的慢查询如 Limit 40000,1000,因为 MySQL 的分页是在 Server 层做的,可以采用延迟关联在减少回表。但是看了相关的业务代码正常的业务逻辑是不会出现这样的请求的,所以很有可能是有恶意用户在刷接
导致索引失效应该避免的情况:最佳左前缀法则:(带头大哥不能死,中间兄弟不能断)不在索引列上做任何操作(计算、函数、类型转换)存储引擎不能使用索引中范围条件右边的列尽量使用覆盖索引(只访问索引的查询(索引列和查询列一致)),减少select *的使用MySQL在使用不等于( != 或 <> )的时候无法使用索引会导致全表扫描is null , is not null 也无法使用索引lik
转载 2023-10-03 18:55:22
114阅读
避免索引失效口诀:模型数空运最快 【来自 抖音:老猿说开发】 第1个字是模 就是代表模糊查询的意思,使用like关键字的时候要是%开头那索引就会失效 第2个字是型 代表数据类型 数据类型错误了,索引也会失效 第3个字是数 对索引字段使用内部函数,索引也会失效 这种情况呢应该建立基于函数的索引 第4个字是空 null 索引不存储空值 如果不限制索引列是not null,数据库会认为索引列有可能存在空
转载 2023-08-10 14:48:41
155阅读
1.使用组合索引时使用全值索引2.使用组合索引时执行最左前缀法则3.使用组合索引时范围查询后的查询索引失效4.不要在索引列上做运算操作,否则索引失效5.字符串不加单引号,造成索引失效6.尽量使用覆盖索引,避免select *7.用or分割开的条件,如果or前的条件中的列有索引,而后边的列没有索引,那么涉及的索引都不会被用到8.以%开头的模糊查询索引失效,可用覆盖索引解决此问题9.如果mysql
转载 2023-09-30 21:12:29
104阅读
SQL优化的几点意见: 1:对查询进行优化尽量避免全表扫描。首先应该考虑在where 或者 order by 涉及到的列上添加索引。 2:尽量避免在where子句中对null值判断,否则查询会放弃走索引。 3:尽量在where子句中不使用 != 或者 <> ,否则查询会放弃索引,进行全表扫描。 4:尽量避免在where子句中使用or连接
转载 2024-03-27 07:30:38
32阅读
索引优化有哪些维度可以进行数据库调优?索引失效,没有充分利用到索引 --- 建立索引关联查询join太多(设计缺陷或不得已的需求) --- SQL优化服务器调优及各个参数的设计(缓冲、线程池等) --- 调整my.cnf数据过多,SQL优化也到达了极限 --- 分库分表SQL查询优化可以分为物理查询优化和逻辑查询优化:物理查询优化:通过索引和表连接的方式来进行优化逻辑查询优化:通过SQL等值变换提
转载 2023-08-27 18:23:50
159阅读
在关系数据库中,如果有上万甚至上亿条记录,在查找记录的时候,想要获得非常快的速度,就需要使用索引索引是关系数据库中对某一列或多个列的值进行预排序的数据结构。通过使用索引,可以让数据库系统不必扫描整个表,而是直接定位到符合条件的记录,这样就大大加快了查询速度。例如,对于students表:idclass_idnamegenderscore11小明M9021小红F9531小军M88如果要经常根据sc
  • 1
  • 2
  • 3
  • 4
  • 5