SQL技巧与优化
来源:互联网 发布:大宗商品交易软件 编辑:程序博客网 时间:2024/05/21 09:57
SQL查询相关数据库基础
如何捕获问题SQL
如何分析SQL
案例分析
查询语句执行顺序
(7 )SELECT (8 )DISTINCT <select list>
(1 )FROM [left_table]
(3 )<join_type> JOIN <right_table>
(2 )ON <join_condition>
(4 )WHERE <where_condition>
( 5)GROUP BY <group_by_list>
( 6)HAVING <having_condition>
(9 )ORDER BY <order_by_list>
ORACLE索引
. 索引结构
. 索引查询示例
MySQL索引
如何捕获问题SQL
ORACLE
SELECT (SYSDATE - SQL_EXEC_START) * 24 * 60 * 60 runtime,
sid,
serial#,
username,
machine,
SQL_ID,
(SELECT sql_text
FROM v$sql s
WHERE s.sql_id = sess.sql_id
and ROWNUM = 1)
FROM v$session sess
WHERE username IS NOT NULL AND username<>'SYS'
AND status = 'ACTIVE';
MySQL
如何分析SQL
MySQL
ORACLE
SQL>set autot traceonly
案例分析
MySQL
DELETE t FROM (
SELECT RESOURCE_ID, COLUMN_ID,MIN(column_ref_RESOURCE_ID) minvalue FROM T_RES_COLUMN_MAP
GROUP BY RESOURCE_ID, COLUMN_ID
HAVING COUNT(*)>1
) a
INNER JOIN T_RES_COLUMN_MAP t ON a.RESOURCE_ID=t.RESOURCE_ID
AND a.COLUMN_ID=t.COLUMN_ID
AND t.column_ref_RESOURCE_ID>minvalue
ORACLE
DELETE T_RES_COLUMN_MAP
where rowid in (select rid
from (select map.rowid rid,
row_number() over(partition by RESOURCE_ID, COLUMN_ID order by resource_rank) rn
from T_RES_COLUMN_MAP map)
where rn > 1);
优化案例分析
优化前(ORACLE)
SELECT COUNT(1)
FROM (SELECT t.resource_id
FROM t_iepg_asset t, t_iepg_goods g,
t_po_resource pr, t_prodoffering p,
t_city tc
WHERE sysdate - t.sys_date <= 100
AND pr.resource_id = t.resource_id
AND p.prodoffering_code = g.prodoffering_code
AND p.prodoffering_id = pr.prodoffering_id
AND t.STATUS in (1, 2) AND g.status in (0, 1)
AND p.status = 0 AND g.charge_mode IN (0, 5)
AND t.record_type != 1
AND NOT EXISTS (SELECT m.resource_id
FROM t_res_cloumn_map m
WHERE t.resource_id = m.resource_id)
AND tc.city_id = t.city_id AND t.media_type != 3
UNION ALL
SELECT t.resource_id
FROM t_iepg_asset t, t_iepg_goods g,
t_po_resource pr, t_prodoffering p,
t_city tc
WHERE sysdate - t.sys_date <= 100
AND pr.resource_id = t.resource_id
AND p.prodoffering_code = g.prodoffering_code
AND p.prodoffering_id = pr.prodoffering_id
AND t.STATUS in (1, 2) AND g.status in (0, 1)
AND p.status = 0 AND t.record_type = 1
AND NOT EXISTS (SELECT m.resource_id
FROM t_res_cloumn_map m
WHERE t.resource_id = m.resource_id)
AND tc.city_id = t.city_id AND t.media_type != 3)
优化后
SELECT sum(flag)
FROM (
SELECT (case when t.record_type=1 and t.media_type !=3 then 1
when t.record_type!=1 and t.media_type !=3 and g.charge_mode IN (0, 5) then 1
end) flag
FROM t_iepg_asset t,
t_iepg_goods g,
t_po_resource pr,
t_prodoffering p,
t_city tc
WHERE t.sys_date >= sysdate - :1
AND pr.resource_id = t.resource_id
AND p.prodoffering_code = g.prodoffering_code
AND p.prodoffering_id = pr.prodoffering_id
AND t.STATUS in (1, 2)
AND g.status in (0, 1)
AND p.status = 0
AND NOT EXISTS (SELECT m.resource_id
FROM t_res_cloumn_map m
WHERE t.resource_id = m.resource_id)
AND tc.city_id = t.city_id
);
- SQL技巧与优化
- sql优化技巧
- sql优化技巧
- sql优化技巧
- SQL 优化技巧
- Oracle SQL优化技巧
- oracle 技巧 sql 优化
- SQL优化技巧
- sql优化的技巧
- SQL语句优化技巧
- SQL优化技巧
- SQL优化技巧
- SQL语句优化技巧
- SQL优化技巧
- sql优化技巧
- sql优化技巧
- SQL优化技巧
- sql语句优化技巧
- C语言第四课
- uva548 比较经典的知道两种遍历序列构造二叉树,注意后面的dfs的回溯
- CentOS 7.0 telnet-server 配置
- CrystalReport水晶报表传递多个参数方法
- Android ActionBar完全解析,使用官方推荐的最佳导航栏(下)
- SQL技巧与优化
- 递归算法详细分析-> C (转)
- 2014-10-31Android学习------菜单的处理(二)-----XML实现------OptionsMenu
- 一个MFC程序的生命历程
- 一些让人赏心悦目的网站,有的时候不需要多么华丽。
- 容斥原理之素数部分模板
- hdu 4390 Number Sequence (容斥原理)
- 中国Android大牛
- Unique Paths II