原文:SQL优化中的重要概念:锁定
上篇文章讲的是事务,这篇就引出另一个重要概念,就是锁定。
当一个用户要读取另一个用户正在修改的数据,或者一个用户正在修改另一个用户正在读取的数据,或者一个用户要修改另一个用户正在修改的数据,就会出现并发问题。锁定能防止并发问题。
资源的锁定方式称为锁定模式,SQL Server中的锁定模式:共享锁,意向锁,更新锁,排他锁,架构稳定锁,架构修改锁,大批量更新锁,键范围锁。不是所有...
TRAN select @@SPID --输出:287 UPDATE t SET v = ‘88888‘WHERE idd = 12、会话2,由于会话一事务没有提交,导致阻塞BEGIN TRAN select @@SPID --输出:105 UPDATE t SET v = ‘888‘WHERE idd = 1--查询会话1的等待信息select session_id, --查询的会话,也就是被阻塞的会话 wait_duration_ms, --等待毫秒数 wait_type, --等待类型,如:LCK_M_X表示正在等待获取排他锁 ...
索引是查询优化最有效和最常用的技术
索引是一个单独的、物理的数据库结构,它是指向表中某一列或若干列上的指针列表。
mysql中,一个表的物理存储由两部分组成,一部分用于存放表的数据,另一部分存放索引,当进行数据搜索时,mysql会首先搜索索引,从中找到所需数据的起始位置的指针,再直接通过指针查找目标数据。
1.创建索引:
CREATE INDEX 索引名 on 表名(要添加索引的列名)
可以给一个表中的多个列添加索引
通过在查询sql语句...
SQL优化清单
1、from 语句中包含多个表的情况下,把记录数少的表放在前面
2、where 语句中包含多个条件时,将刷选多的条件放前面
3、避免使用select * ,因为这样会去查询所有列的数据,这样会消耗更多的时间
4、在SQL语句的where 和join 部分中用到的所有字段上,应该加上索引
5、SQL是大小写不敏感的语言,但规范为大写
SQL优化清单标签:大写 字段 sql select 大小写 规范 优化 sql语句 清单 本文系统来源:h...
sq编写过程:select dinstinct ..from ..join ..on ..where ..group by ...having ..order by ..limit ..
sql解析过程: from .. on.. join ..where ..group by ....having ...select dinstinct ..order by limit ...
?
避免索引失效in可能造成索引失效,避免使用in或将in条件放置最后【where name = zs and age in(23,25)】
复合索引使用顺序和创建顺序一致且不跨列使用(最佳左前缀)
复合索引经量全索引匹配(a、b、c全都用上)
避...
1. sql中索引的使用技巧: (1) 对于多列索引(复合索引),sql查询条件只有使用了最左边的列,索引才会生效。 (2) 对于like模糊查询,模糊匹配的字符串最前面禁止使用%、_等模糊匹配器的字符,否则索引将失效,如果最前面必须要用到模糊匹配,建议一般采用全文索引技术(sphinx(coresseek))。 (3) sql条件中有or关键字,or两边的条件必须都为索引(如果是组合索引,必须是第一个),否则索引全部无效。一般情况,能避免关键...
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from t where num=0
3.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫...
ExecutorService executorService = new ThreadPoolExecutor(30,30,1, TimeUnit.MILLISECONDS,new LinkedBlockingDeque<>()); public List<Map> getCiServiceBadEvaNumStatistic(SAASIndexQuery saasIndexQuery) throws InvocationTargetException, IllegalAccessException {String startDate = saasIndexQuery.getStartDate();String endDate = saasIndexQuery.getEndDate();int days = DateUtil.getDatebetweenOfDayNum(DateU...
不好的sql可能存在的问题:性能低、执行时间长、等待时间长、sql语句欠佳(连接查询)、索引失效、服务器参数设置不合理(缓冲区、线程数)
编写过程:select distinct.. from.. join..on.. where.. group by.. having.. order by.. limit..
解析过程:from.. on.. join.. where.. group by.. having.. select distinct.. order by.. limit.. SQL 优化标签:问题: mit 好的 缓冲 语句 过程 服务 order by havi...
sql的优化相关问题
答: 这篇文章写的真心不错,值得仔细拜读,所以将其转载过来了。
近期因工作需要,希望比较全面的总结下SQL SERVER数据库性能优化相关的注意事项,在网上搜索了一下,发现很多文章,有的都列出了上百条,但是仔细看发现,有很多似是而非或者过时(可能对SQL SERVER6.5以前的版本或者Oracle是适用的)的信息,只好自己根据以前的经验和测试结果进行总结了。
我始终认为,一个系统的性能的提高,不单单是试运行或者...
1、应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。2、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。3、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描。如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=04、...
1.开启10046事件drop table TX1 purge;
create table TX1 (x int);
set linesize 266
set pagesize 5000
alter system flush shared_pool;
alter system flush buffer_cache;
alter session set events 10046 trace name context forever,level 12;2.批量硬解析操作beginfor i in 1..100000loop execute immediateinsert into TX1 values (||i||);end loop;commit;
end;
/3.关闭10046事件alter session set events 10046 trace nam...
SQL专栏
SQL基础知识汇总
SQL高级知识汇总
鉴于不少同学对SQL优化不是很感兴趣,以后放在次条推送,有兴趣的小伙伴还请继续关注。
上一讲我们使用DISTINCT来去掉重复行以提高查询效率,这和小伙伴们平常听到的一条优化建议:尽量少使用DISTINCT相悖。下面我们来看看DISTINCT到底该不该使用。如果不想看处理过程的可以直接跳到红色结论部分。
1.使用DISTINCT去掉重复数据
我们重复一下上一讲的例子:SELECT DISTINCT UnitPrice
FROM ...
参考资料:
本系列博客主要参考资料有CUUG冉乃纲老师数据库教学笔记,《SQL优化核心思想》(罗炳森,黄超,钟侥著),《PostgreSQL技术内幕:查询优化深度探索》(张树杰著),排名不分先后。
1 半连接和内连接转换
1.1 环境准备
create table tests1 as select * from dba_objects;
create table tests2 as select * from dba_objects;
1.2 问题SQL
EXPLAIN PLAN FOR SELECT DISTINCT A.OWNER
FROM tests1 A
WHERE A.OWNER ...
SQL专栏
SQL基础知识汇总
SQL高级知识汇总
新手小伙伴平时可能比较少用到变量,其实变量在数据查询过程中经常使用到,而且可以有效提高查询速度。
1什么是变量
变量其实就是我们定义的一个可变参数,其基本语法如下:
--定义一个名称为@I的变量,指定其类型为整数
DECLARE @I VARCHAR(20)
--对变量@I赋值为
SET @I=SQL数据库开发
--输出@I的值
SELECT @I
结果:SQL数据库开发其中DECLARE @部分是固定写法,@I是变量名称,变量必须定...