Merge语句是Oracle 9i新增的语法,用来合并Update和Insert语句。通过Merge语句,根据一张表或子查询的连接条件对另外一张表进行查询,连接条件匹配上的进行Update,无法匹配的执行Insert。这个语法仅需要一次全表扫描就完成了全部工作,执行效率要高于Insert+Updat ...
分类:
数据库 时间:
2019-10-06 11:32:28
阅读次数:
105
具体参考: https://www.cnblogs.com/gomysql/p/3720123.html 原文如下: 在工作中,我们用于捕捉性能问题最常用的就是打开慢查询,定位执行效率差的SQL,那么当我们定位到一个SQL以后还不算完事,我们还需要知道该SQL的执行计划,比如是全表扫描,还是索引扫描 ...
分类:
数据库 时间:
2019-10-05 12:32:18
阅读次数:
120
高强度训练第十九天总结: 为什么要用索引 通过创建唯一性索引可以保证数据库表中每一行数据的唯一性 可以大大加快数据的检索速度(大大减少了检索的数据量),这也是创建索引最主要的原因。 帮助服务器避免排序和临时表 将随机IO变为顺序IO 可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意 ...
分类:
数据库 时间:
2019-10-03 20:04:48
阅读次数:
113
全表扫描是数据库搜寻表的每一条记录的过程,直到所有符合给定条件的记录返回为止。通常在数据库中,对无索引的表进行查询一般称为全表扫描;然而有时候我们即便添加了索引,但当我们的SQL语句写的不合理的时候也会造成全表扫描。 以下是经常会造成全表扫描的SQL语句及应对措施: 1. 使用null做为判断条件 ...
分类:
数据库 时间:
2019-09-26 21:32:27
阅读次数:
90
例如:一张USER表 有字段属性 name,age 其中name为索引 下面列举几个索引失效的情况 1. select * from USER where name=‘xzz’ or age=16; 例如这种情况:当语句中带有or的时候 即使有索引也会失效。 2.select * from USER ...
分类:
数据库 时间:
2019-09-26 19:56:28
阅读次数:
113
在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。所以我们深入了解MySQL ...
分类:
数据库 时间:
2019-09-26 16:06:53
阅读次数:
85
1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.2000条以内的记录不建议做索引 3.最佳左前缀原则,联合索引的B+Tree是按照第一个关键字进行索引排列的。 4.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导 ...
分类:
数据库 时间:
2019-09-24 23:02:11
阅读次数:
175
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。 3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引 ...
分类:
数据库 时间:
2019-09-22 13:09:19
阅读次数:
77
在我们编写sql的过程中where的条件使用不当会使索引(index)失效 1. 在 where 子句中使用!=或<>操作符,会使引擎放弃使用索引而进行全表扫描 2. 在 where 子句中对字段进行 null 值判断,会使引擎放弃使用索引而进行全表扫描 3. 在 where 子句中使用 or 来连 ...
分类:
数据库 时间:
2019-09-18 01:26:42
阅读次数:
152
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在 ...
分类:
数据库 时间:
2019-09-15 17:12:38
阅读次数:
96