前因: 客户咨询,有一个业务sql(代表经常被执行且重要),全表扫描在系统占用资源很高(通过ash报告查询得到信息) 思路: 1.找到sql_text,sql_id 2.查看执行计划 3.查询sql涉及对象的对象数据量,段大小,行数量,where条件列,是否存在索引,列的选择读情况如何 4.总结,优化整改 1.找到sql_text,sql_id 094cmrxrahdy2 SELECT ~10个列名称(由于设计用户信息,因此部分信息不再详细说明) FROM Prescription WHERE…
-- 数据量比较大的情况,统计十分钟内每秒钟执行次数 ); -- 开始时间 ); -- 结束时间 declare @num int; -- 结束时间 set @begintime = '2019-08-10 09:10:00' -- 开始时间 set @endtime = '2019-08-10 09:20:00' -- 结束时间 ) ),loginTime, ) ),loginTime, ) <= @endtime) print(@num) select @num as 总条数, AVG(调用…
工作过程中,如果一个数据库的表比较多,手工编写统计脚本就会比较繁琐,于是摸索出自动生成各表统计数据量脚本的通用方法,直接上代码: /* 脚本来源:https://www.cnblogs.com/zhang502219048/p/10970193.html */ ), Num int) exec sp_MSforeachtable 'insert into #t select ''?'', count(*) from ?' select replace(replace(TableName,'[',…
一.前言 java 中MySQL JDBC 封装了流式查询操作,通过设置几个参数,就可以避免一次返回数据过大导致 OOM. 二.如何使用 2.1 之前查询 public void selectData(String sqlCmd) throws SQLException { validate(sqlCmd); Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try { conn = petad…
mysql的“慢查询”指的是超过了允许的最大查询时间(long_query_time)的sql语句,而“未使用索引”查询顾名思义就是查询语句没有使用到索引的sql语句. 慢查询配置和使用 在msyqld的启动配置文件或命令行参数中增加以下参数 long_query_time=1 log-slow-queries=/var/mysql/logs/slow.log long_query_time参数表示的是慢查询的度量时间,单位是秒,最小是1,缺省值是10,凡是执行时间超过long_query_ti…
摘要 IN 一定走索引吗?那当然了,不走索引还能全部扫描吗?好像之前有看到过什么Exist,IN走不走索引的讨论.但是好像看的太久了,又忘记了.哈哈,如果你也忘记了MySQL中IN是如何查询的,就来复习下吧. 问题 问题要从之前的统计店铺数关注人数说起 SELECT shop_id, count(user_Id) as attentionNumber FROM shop_attention WHERE shop_id IN <foreach collection="shopIds"…
这里要纠正一个网上很多教程说的模糊匹配不能走索引的说法,因为在看<收获,不止SQL优化>一书,里面举例说到了,并且自己也跟着例子实践了一下,确实like一些特殊情况也是可以走索引的 例子来自<收获,不止SQL优化>一书,实践准备: //建表,注意要非空数据 drop table t purge; create table t as select * from dba_objects where object_id is not null; select * from t; //更新…
1.模糊查询 后通配 走索引 前通配 走全表 2.where条件用in或or 不会走索引索引的本质是平衡b+数,是为了方便查询的平衡多路查找树 B-Tree相比,B+Tree有以下不同点: 每个节点的指针上限为2d而不是2d+1: 内节点不存储data,只存储key: 叶子节点不存储指针 B+Tree比B-Tree更适合实现外存储索引结构 3.…
本文转载自:http://hi.baidu.com/ajyajyajy/item/4e2a7f4dc83393d2c1a592c1 use DBNAMEgoselect * from sysobjects where xtype='U'; --这是查询所有表的信息select count(*) from sysobjects where xtype='U' --这是查询表的数量 ‍select a.name, b.rows from sysobjects a with(nolock) join…
public Resultmodel getexpenseMessagx(HttpServletResponse response, String date1, String date2) { long startTime = System.currentTimeMillis(); Log.info("开始:费用表" + "///类.方法:" + this.getClass().getSimpleName() + "." + Thread.cur…
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/QQ578473688/article/details/54561397 思路1:采用备份表 备份表中存储不活跃的数据eg:只有查询操作的数据(数据的部分属性字段不再更改)且查询次数也较少: 备份表可以是一张或者多张备份表,若采用多张备份表,则定期创建备份表(备份表的命名要规范,可以考虑使用原表名称+时间戳命名) 采用多张备份表:定期创建一个备份表(备份一定期间范围内的数据,多张备份表采用联合查询)…
SELECT t0.ID as id, t0.`NAME` as name, t0.PHONE as phone, t0.`CITY_CODE` as cityCode, t0.SHOOTING_TIME as shootingTime, t0.REMARK as remark, t0.SOURCE_FROM as sourceFrom,-- 平台来源 t0.REFER as refer, t0.UPDATE_TIME as updateTime, CONCAT(IFNULL(t0.SHOOTI…
select * from slot_value_temp force index(idx_slot_type_id) WHERE slot_type_id = 'xxxxxx'; 不定期更新…
和oracle有区别, 需要关联表 SELECT A.NAME ,B.ROWS  FROM sysobjects  A JOIN sysindexes B ON A.id = B.id WHERE A.xtype = 'U' AND B.indid IN(0,1) ORDER BY B.ROWS DESC; -- 需要注意 1. 执行脚本需要在你 新建的 目标数据库那一层  新建查询: 2. sysobjects  A  和 sysindexes B 是两张不同的表…
SELECT COUNT (DISTINCT tmp.PLATE) totalNum, tmp.newTime FROM ( SELECT T .LICENSE_PLATE plate, TO_CHAR ( T .create_time, 'yyyymmddhh24mi' ) oldTime, -- 原来的时间 CASE WHEN SUBSTR ( TO_CHAR (T .create_time, 'mi'), , ) THEN TO_CHAR ( T .create_time, 'yyyymm…
只需要在web.config的configeration节点中增加如下子节点即可: <system.web.extensions>       <scripting>           <webServices>               <jsonSerialization maxJsonLength="20971520"/>           </webServices>       </scripting&g…
一.索引基础索引是对数据库表中一列或多列的值进行排序的一种结构,可以让我们查询数据库变得更快.MongoDB 的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的查询优化技巧.下面是创建索引的命令:db.user.ensureIndex({"username":1}) 获取当前集合的索引:db.user.getIndexes() 删除索引的命令是:db.user.dropIndex({"username":1}) 在 MongoDB 中,我们同样可以创建复…
一.背景 1.1 问题描述 近期发现一台SQL Server的CPU利用率很不稳定,发现不定时的飙升到100%,更可怕的是在业务繁忙时,影响了业务调用,失败率明显增加,所以,减低CPU的利用率,是迫切需要解决的问题. CPU升高的原因直观上来说,就是CPU(中央处理器)的负载过高, 中央处理器忙不过来.进一步分析的话,可以从两个角度优化,1.减少单个CPU 的处理时间:2.减少单个任务占有的CPU核数,即一个任务不要分配太多的CPU核数. 1.2 优化的方法 1.表结构的优化,例如索引是否合理.…
声明在前面 总结就是 不能单纯说 走和不走,需要看数据库版本,数据量等 ,希望不要引起大家的误会,也不要被标题党误导了. 1 数据库版本: 2 建表语句 CREATE TABLE s1 ( id INT NOT NULL AUTO_INCREMENT, key1 VARCHAR(200), key2 VARCHAR(200), key3 VARCHAR(200), key_part1 VARCHAR(200), key_part2 VARCHAR(200), key_part3 VARCHAR(…
1.索引的概念 根据书的目录可以知道内容所在的页码,不用一页一页翻书,可直接通过页码找到内容.数据库的索引类似于书本的目录,索引指向内容存储位置,可直接定位到内容而不必扫描整张表,减少了磁盘的I/O次数. 聚集索引: 根据拼音查找汉字(认识的字).我们把这种索引的顺序也就是数据的物理顺序的方式称为聚集索引.因为数据的物理顺序只有一种,所以一个表只能有一个聚集索引.聚集索引效率高,但对数据更新影响大,不适用于频繁更新的列. 非聚集索引:根据偏旁查找到该字所在的页码,然后通过页码找到汉字(不认识的字…
使用Oracle的instr函数与索引配合提高模糊查询的效率 一般来说,在Oracle数据库中,我们对tb表的name字段进行模糊查询会采用下面两种方式:1.select * from tb where name like '%XX%';2.select * from tb where instr(name,'XX')>0; 若是在name字段上没有加索引,两者效率差不多,基本没有区别. 为提高效率,我们在name字段上可以加上非唯一性索引:create index idx_tb_name on…
SQL查询速度慢的原因分析和解决方案 查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 5.网络速度慢 6.查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7.锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷) 8.sp_lock,sp_who,活动的用户查看,原因是读写竞争资源. 9.返回了不必要的行和列 10.查询语句不好,…
转自:http://jingyan.baidu.com/article/8275fc868ce57946a03cf692.html 一条sql突然执行变慢,耗时9秒,应用是不能改的,只能从数据库方面下手解决 步骤思路: 1:查看sql是否走索引 2:查看索引是否失效 3:hint 强制走索引(只是用来查看hint状态下,查询是否更改,应用是不能改的) 4:收集该表所有信息(包括索引) 5:分析该表所有信息(包括索引) 6:再次执行并查看 注意:哪个用户执行较慢,就用哪个用户进行操作,这样才准确…
情况描述:在MySQL的user表中,对a,b,c三个字段建立联合索引,那么查询时使用其中的2个作为查询条件,是否还会走索引? 根据查询字段的位置不同来决定,如查询a,     a,b    a,b,c    a,c   都可以走索引的,其他条件的查询不能走索引. 组合索引 有“最左前缀”原则.就是只从最左面的开始组合,并不是所有只要含有这三列存在的字段的查询都会用到该组合索引. 验证过程如下所示: 首先,在SQLyog中建立一个user表,如下图所示: 对中间3个字段(user_name,us…
不使用索引原文 : http://itlab.idcquan.com/linux/MYSQL/918330.html MySQL查询不使用索引汇总 众所周知,增加索引是提高查询速度的有效途径,但是很多时候,即使增加了索引,查询仍然不使用索引,这种情况严重影响性能,这里就简单总结几条MySQL不使用索引的情况 如果MySQL估计使用索引比全表扫描更慢,则不使用索引.例如,如果列key均匀分布在1和100之间,下面的查询使用索引就不是很好:select * from table_name where…
一个字符类型的.一个int类型的,查询的时候到底会不会走索引,其实很多工作了几年的开发人员有时也会晕,下面就用具体事例来测试一下. 1.  准备工作 先准备2张表,以备后续测试使用. 表1:创建表test1,总共3列,其中id 是主键(int),c_no 为int型,且有索引,c_2为普通字段 /*创建表test1 */ create table test1(id int primary key,c_no int ,c_2 varchar(1),key c_no(c_no)); /* 插入一些测…
1,查询出last_name 为 'Chen' 的 manager 的信息.  select * fromwhere employee_id = ( selectfrom employees where'Chen') 2,查询每个月倒数第2 天入职的员工的信息 select last_name, hire_date   where hire_date = last_day(hire_date) – 1   3,查询平均工资高于 8000 的部门 id 和它的平均工资.  SELECT depar…
标签:SQL SERVER/MSSQL SERVER/数据库/DBA/索引体系结构/堆 概述 本篇文章是关于堆的存储结构.堆是不含聚集索引的表(所以只有非聚集索引的表也是堆).堆的 sys.partitions 中具有一行,对于堆使用的每个分区,都有 index_id = 0.默认情况下,一个堆有一个分区.当堆有多个分区时,每个分区有一个堆结构,其中包含该特定分区的数据.例如,如果一个堆有四个分区,则有四个堆结构:每个分区有一个堆结构.根据堆中的数据类型,每个堆结构将有一个或多个分配单元来存储和…
标签:SQL SERVER/MSSQL SERVER/数据库/DBA/索引体系结构/堆 概述 本篇文章是关于堆的存储结构.堆是不含聚集索引的表(所以只有非聚集索引的表也是堆).堆的 sys.partitions 中具有一行,对于堆使用的每个分区,都有 index_id = 0.默认情况下,一个堆有一个分区.当堆有多个分区时,每个分区有一个堆结构,其中包含该特定分区的数据.例如,如果一个堆有四个分区,则有四个堆结构:每个分区有一个堆结构.根据堆中的数据类型,每个堆结构将有一个或多个分配单元来存储和…
微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引.簇集索引)和非聚集索引(nonclustered index,也称非聚类索引.非簇集索引)…… (一)深入浅出理解索引结构 实际上,您可以把索引理解为一种特殊的目录.微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引.簇集索引)和非聚集索引(nonclustered index,也称非聚类索引.非簇集索引).下面,我们举例来说明一下聚集索引和非聚集索引的…