zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    mysql: 多时区的聚合统计
    机器学习实例---3.2、朴素贝叶斯之新浪新闻分类
    机器学习实例---3.1、朴素贝叶斯基础
    机器学习实例---2.1、决策树(实战)
    python的pickle模块
    机器学习实例---2.1、决策树(介绍)
    如何计算熵
    sklearn库简单介绍
    机器学习实例---1.3、k-近邻算法(数字识别)
    理解ThreadPoolExecutor线程池的corePoolSize、maximumPoolSize和poolSize
  • 原文地址:https://www.cnblogs.com/latter/p/7552481.html
Copyright © 2011-2022 走看看