从上海来到温州,看了前几天监控的sql语句和数据变化,发现有一条语句的io次数很大,达到了150万次IO,而两个表的数
性能问题描述 之前公司接火车票下订单的项目,由于购买火车票的人数众多,所以订单记录也很多,单表有100多万,订单里会存放购票人的身份证号,由于监管要求,身份证属于敏感信息,不能明文存储,需要加密存储,用公司加密算法加密之后,身份证号就变成了128位的字符长度,而一些场景有需要使用身份证号去查询。 所以怎么写SQL和设计索引,既能减少数据库资源消耗,又能保证高效的查询性能呢? 示例表下面
转载
2023-08-23 08:24:33
67阅读
我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为笔者学习、摘录、并汇总部分资料与大家分享!
(1) 选择最有效率的表名顺序(只在基于规则的优化器中有效):
orACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM
转载
2010-08-13 09:58:22
196阅读
负向查询不能使用索引
select name from user where id not in (1,3,4);
应该修改为:
select name from user where id in (2,5,6);
前导模糊查询不能使用索引
如:
select name from user where name like '%zhangsan'
非前导则可以:
select n
转载
2021-06-21 21:11:26
98阅读
sql语句优化 性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化。为了获得稳定的执行性能,SQL语句越简单越好。对复杂的SQL语句,要设法对之进行简化。常见的简化规则如下:1)不要有超过5个以上的表连接(JOIN)2)考虑使用临时表或表变量存放中间结果。3)少用子查询4)视图嵌套不要过深,一般视图嵌套不要超过2个为宜。连
转载
2013-11-28 16:43:00
58阅读
2评论
sql语句优化 性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的
转载
2022-12-08 09:11:40
15阅读
1.1、 尽量多的共享SQL语句 为了不重复解析相同的SQ
转载
2023-08-01 15:14:59
88阅读
emm,写SQL谁都是会写的啦!但是要提高效率这就是进阶的任务啦!所以我看到的坑就保存一下啦! 字段1、尽量使用TINYINT、SMALLINT、MEDIUM_INT作为整数类型而非INT,如果非负则加上UNSIGNED;2、VARCHAR的长度只分配真正需要的空间;3、尽量使用TIMESTAMP而非DATETIME;原因: 相同点:TIMESTAMP列的显示格...
原创
2021-07-15 09:48:57
161阅读
前言一:常规SQL语句优化1:建议 不用 * 来替代所有列名2:用 truncate 替代 delete 示例:创建一个存储过程,实现使用 truncate 命令动态删除数据表。 1 SYS@orcl> create or replace procedure trun_table(table_deleted in varchar2) as --创建一个存储过程,传入一个表...
原创
2021-07-16 15:40:26
188阅读
SQL语句优化(转载) 一、操作符优化 1、IN 操作符 用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格。但是用IN的SQL性能总是比较低的,从Oracle执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别: ORACLE试图将其转换成多个表的连接,如果转换不
转载
2021-07-15 15:21:37
99阅读
一、操作符优化 1、IN 操作符 用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格。但是用IN的SQL性能总是比较低的,从Oracle执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别: ORACLE试图将其转换成多个表的连接,如果转换不成功则先执行IN里面的子查询,再查询外层的表记录,如果转换成功则直接采用多个表的连接方式查询。由此可见用IN的SQL至少多了
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from t
转载
2021-04-18 21:16:08
206阅读
2评论
sql语句优化 性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化。为了获得稳定的执行性能,SQL语句越简单越好。对复杂的SQL语句,要设法对之进行简化。常见的简化规则如下: 1)不要有超过5个以上的表连接(JOIN)2)考虑使用临时表或表变量存放中间结果。3)少用子查询4)视图嵌套不要过深,一般视图嵌
原创
2013-01-01 19:53:00
320阅读
前言前段时间接手库房项目之后,有很多地方需要优化,从中也学到了很多东西,将在博客中一一整理出来分享给大家。实际案例:库房系统中管理员权限下的入库管理中的入库记录页面每次打开时都加载的非常慢,长达三十多秒,网速慢的时候会达到一分钟左右,这个问题非常影响库房系统的功能使用,首先需要解决的就是这个问题。最后我们找到了问题所在,原来是D层下的SQL语句的问题,查询速率快慢和SQL语句的查询顺序密切...
原创
2021-07-08 14:13:39
229阅读
1、对查询进行优化,应尽量避免全表扫描,首先应考虑在 wher 将导致引擎放弃使用索引而 ...
转载
2021-07-11 22:38:00
98阅读
2评论
SQL语句优化 1)应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。2)应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在n
转载
2019-08-04 14:30:00
99阅读
2评论
sql语句优化 性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化。 为了获得稳定的执行性能,SQL语句越简单越好。对复杂的SQL语句,要设法对之进行简化。 常见的简化规则如下: 1)不要有超过5个以上的表连接(JOIN)
转载
2021-08-18 01:17:00
95阅读
前一段时间一直在优化系统,看了一些关于SQL语句优化的东西,在这里分享一下。 1、统一SQL语句的写法 对于下面两句SQL语句。程序猿觉得是同样的。数据库查询优化器觉得是不同的。 select*from dual select*From dual 事实上就是大写和小写不同,查询分析器就觉得是两句不同
转载
2016-03-07 16:58:00
99阅读
2评论
sql语句优化 性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化。 为了获得稳定的执行性能,SQL语句越简单越好。对复杂的SQL语句,要设法对之进行简化。 常见的简化规则如下: 1)不要有超过5个以上的表连接(JOIN)2
转载
2016-07-04 17:08:00
68阅读