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是变量名称,变量必须定...
1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null最好不要给数据库留NULL,尽可能的使用 NOT NULL填充数据库.
备注、描述、评论之类的可以设置为 NULL,其他的,最好不要使用NULL。
不要以为 NULL 不需要空间,比如:char(100) 型,在字段建立...
SQL优化
1.负向查询不使用索引(实质上就是检索) select name from user where id not in (1,3,4);
应该修改为: select name from user where id in (2,5,6);
2.前导模糊查询不使用索引(%zhangsan),非前导则可以(zhangsan%)
3.数据区分不明显的不建议创建索引
4.字段的默认值不要为 null
5.在字段上进行计算不能命中索引 select name from user where FROM_UNIXTIME(create_time) < CURDATE();
应该修改为: select name from ...
话不多说,直接上执行计划:
SQL> set lines 500;
SQL> set pagesize 9999;
SQL> set long 9999;
SQL> select * from table(dbms_xplan.display_cursor(41348610,null,advanced));PLAN_TABLE_OUTPUT
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------...