SELECT * FROM record WHERE amount/30 < 1000 --11秒
SELECT * FROM record WHERE convert(char(10) date 112) = '19991201' --10秒
分析:
WHERE 子句中对列的任何操作结果都是在 SQL 运行时逐列计算得到的 , 因此它不得不进行表搜索 , 而没有使用该列上面的索引 。
如果这些结果在查询编译时就能得到 , 那么就可以被 SQL 优化器优化 , 使用索引 , 避免表搜索 , 因此将 SQL 重写成下面这样:
SELECT * FROM record WHERE card_no like '5378%' -- < 1秒
SELECT * FROM record WHERE amount < 1000*30 -- < 1秒
SELECT * FROM record WHERE date = '1999/12/01' -- < 1秒
30、当有一批处理的插入或更新时 , 用批量插入或批量更新 , 绝不会一条条记录的去更新 。
31、在所有的存储过程中 , 能够用 SQL 语句的 , 我绝不会用循环去实现 。
例如:列出上个月的每一天 , 我会用 connect by 去递归查询一下 , 绝不会去用循环从上个月第一天到最后一天 。
**【需要Java面试题或者技能提升资料的小伙伴点赞+转发 , 关注我之后私信【666】或【888】后 , 即可获取】**)
32、选择最有效率的表名顺序(只在基于规则的优化器中有效):
Oracle 的解析器按照从右到左的顺序处理 FROM 子句中的表名 , FROM 子句中写在最后的表(基础表 driving table)将被最先处理 , 在 FROM 子句中包含多个表的情况下 , 你必须选择记录条数最少的表作为基础表 。
如果有 3 个以上的表连接查询 , 那就需要选择交叉表(intersection table)作为基础表 , 交叉表是指那个被其他表所引用的表 。
33、提高 GROUP BY 语句的效率 , 可以通过将不需要的记录在 GROUP BY 之前过滤掉 。 下面两个查询返回相同结果 , 但第二个明显就快了许多 。
低效:
SELECT JOB AVG(SAL)
FROM EMP
GROUP BY JOB
HAVING JOB = 'PRESIDENT'
OR JOB = 'MANAGER'
高效:
SELECT JOB AVG(SAL)
FROM EMP
WHERE JOB = 'PRESIDENT'
OR JOB = 'MANAGER'
GROUP BY JOB
34、SQL 语句用大写 , 因为 Oracle 总是先解析 SQL 语句 , 把小写的字母转换成大写的再执行 。
35、别名的使用 , 别名是大型数据库的应用技巧 , 就是表名、列名在查询中以一个字母为别名 , 查询速度要比建连接表快 1.5 倍 。
36、避免死锁 , 在你的存储过程和触发器中访问同一个表时总是以相同的顺序;事务应经可能地缩短 , 在一个事务中应尽可能减少涉及到的数据量;永远不要在事务中等待用户输入 。
37、避免使用临时表 , 除非却有需要 , 否则应尽量避免使用临时表 , 相反 , 可以使用表变量代替 。 大多数时候(99%) , 表变量驻扎在内存中 , 因此速度比临时表更快 , 临时表驻扎在 TempDb 数据库中 , 因此临时表上的操作需要跨数据库通信 , 速度自然慢 。
38、最好不要使用触发器:
- 触发一个触发器 , 执行一个触发器事件本身就是一个耗费资源的过程;
- 如果能够使用约束实现的 , 尽量不要使用触发器;
- 不要为不同的触发事件(Insert、Update 和 Delete)使用相同的触发器;
- 不要在触发器中使用事务型代码 。
- 表的主键、外键必须有索引;
- 数据量超过 300 的表应该有索引;
- 经常与其他表进行连接的表 , 在连接字段上应该建立索引;
- 经常出现在 WHERE 子句中的字段 , 特别是大表的字段 , 应该建立索引;
- 索引应该建在选择性高的字段上;
- 近年来|算力就这么点,为了提升语言模型性能,谷歌想了个新点子论文链接
- 腾讯云智能打法首揭秘!4条快速路让AI“开箱即用”
- 在Excel表格的使用中|excel怎么快速批量删除所有空白行
- 在平时办公中|excel表格中如何快速提取部分数据
- 平时大家需要同时创建很多Word文档的时候是怎么做的呢?大部分用户估计都是一个一个复制粘...|如何快速批量创建大量的word文档?
- 电脑只要用久了|为什么电脑使用时间长会导致重装系统也无法提升运行速度
- 数据库原理及MySQL应用 | 日志管理(附限免视频)
- iOS|iOS15.7.2正式推送,续航大幅提升超乎想象,信号太好了,必须养老
- 最新央行官网支付牌照查询教程,快速判断POS机是否是正规品牌
- iOS|iOS16.2发布,信号提升很惊喜,续航省电太顶了,终于可以养老
