SQL复查总结

一、权限

1.重新建用户和库

create user test with password '6789@jkl';

create database db_test owner test;

grant all privileges on database db_test to test;

--给test用户赋予所有权限

alter user test set search_path to db_test, public;

-- http://blog.csdn.net/su377486/article/details/50826639

 

2.在已有库建权限

grant all privileges on database db_test to test;

grant all on schema db_schema to test;(所有schema)

grant all on all tables in schema db_schema to test;(表、视图)区别

grant all on table db_schema.t_test to test; (GP)

二、慢SQL

1、格式化sql,查看sql是否合理,业务逻辑是否有问题。

 

2、查看执行计划,是否走索引,是否有全表扫描。

 

3、SQL拆解,分步执行看快慢,尝试加索引。

 

4、慢sql常见情况典型情况:

    全表扫描、

    外键索引缺失

    like %%、select 子查询、 or、notin、not exists。

 

三、查看执行计划(关于执行计划在另一篇博客中有讲解)---explain   explain  analysis

EXPLAIN
SELECT * FROM DB_TEST.T_TEST

1.评估开始消耗..评估总消耗。假设查询从执行到结束的时间。
2.评估查询节点的输出行数。假设该节点执行结束。
3.评估查询节点的输出行的平均字节数。

EXPLAIN
SELECT * FROM DB_MSYS.T_MSYS where n_jbfy = 2300;(没有索引)
EXPLAIN
SELECT * FROM DB_MSYS.T_MSYS where n_jbfy = 2300;(jbfy索引)

EXPLAIN ANALYZE
SELECT * FROM DB_MSYS.T_MSYS aj , db_msys.t_msysdsr dsr
where aj.n_ajbs = dsr.n_ajbs and aj.n_jbfy in (2300,2356)

SQL是否需要调优,有一个标准是,查看执行计划EXPLAIN和EXPLAIN ANALYZE的时间相差不大,说明不需要调优

解释:

1、通过EXPLAIN ANALYZE可以检查规划器评估的准确性。使用ANALYZE选项,EXPLAIN实际运行查询,显示真实的返回记录数和运行每个规划节点的时间--http://toplchx.iteye.com/blog/2091860

2、EXPLAIN还有BUFFERS选项可以和ANALYZE一起使用,来得到更多的运行时间分析,Buffers提供的数据可以帮助确定哪些查询是I/O密集型的

EXPLAIN (ANALYZE, BUFFERS)
SELECT * FROM DB_MSYS.T_MSYS

 

posted @ 2017-09-19 16:23  安静的程序媛  阅读(305)  评论(0编辑  收藏  举报