数据库# Oracle # SQL优化
数据库# Oracle # SQL优化
编程周记
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JDBC增删改查
1package com.xy;import java.io.IOException;import java.io.InputStream;import java.sql.*;import java.util.*;/** * @ClassName JdbcUtil * @Description * @Author xy * @Date 2022/4/22 * @Version 1.0 **/public class JdbcUtil { private stati原创 2022-04-22 15:00:25 · 3770 阅读 · 0 评论 -
mysql模拟序列
--创建序列表CREATE TABLE IF NOT EXISTS `sequence` ( `name` varchar(50) NOT NULL, `current_value` int(11) NOT NULL, `increment` int(11) NOT NULL DEFAULT '1' );INSERT INTO `sequence` (`name`, `current_value`, `increment`) VALUES ('s_blog_acc...原创 2021-12-26 21:53:45 · 411 阅读 · 0 评论 -
Oracle、mysql、PostgreSQL之间的区别(笔记)
Oracle、mysql、PostgreSQL区别列表功能/函数/操作 Oracle mysql PostgreSQL 创建序列 没有序列 -- DROP SEQUENCE seq_tache_detail_id; CREATE SEQUENCE seq_test_id INCREMENT BY 1 MINVALUE 10000 MAXVALUE 999999999999999 STAR...原创 2021-12-29 10:30:20 · 2333 阅读 · 0 评论 -
记录一次sql优化改造碰到的坑:表关联改成exists,查询出多余数据
建表:drop table t_test1;drop table t_test2;create table t_test1(id number(10));create table t_test2(id number(10),name varchar2(32),status number(10));t_test1t_test2待改造的语句: 假设t2是大表,这样查,数据量很大select t1.* from t_test1 t1 left jo..原创 2021-12-17 20:37:18 · 1005 阅读 · 0 评论 -
pg SQL查询优化经历
1.大表不做数据转换假设d表是大表,a表是小表and a.sender=cast(d.staff_id as varchar)改成:and cast(a.sender as numeric)=d.staff_id2. distinct导致没用上索引修改:删除distinct3.视图查询慢视图里面查询了太多东西改成查视图里面的源表,取我们需要的字段比如视图里面有很多子查询,但我们不需要那么多字段。4. exists只在理论中背过?查询语句 关原创 2021-12-07 23:14:58 · 2051 阅读 · 0 评论 -
内连接(join、inner join )、左连接(left join) 、全连接(full join)
建表:drop table t_test1; drop table t_test2; create table t_test1( aid number(10), aname varchar2(40) ); create table t_test2( bid number(10), bage varchar2(40) );插入:insert into t_test1 (AID, ANAME) values (1, '张三'); insert into t_test1 (AID, ANAME) va原创 2021-12-07 23:04:22 · 6006 阅读 · 0 评论 -
Caused by: java.lang.IllegalStateException: Property ‘configuration‘ and ‘configLocation‘ can not sp
Caused by: java.lang.IllegalStateException: Property 'configuration' and 'configLocation' can not sp解决: 在springboot的application.yml不能同时使用以下两个配置,换句话说,两者配置方式只能取其一. mybatis: config-location: classpath:mybatis/mybatis-config.xml confi...原创 2021-12-02 16:52:39 · 291 阅读 · 0 评论 -
纯代码测试mybatis的xml语句,无需修改mybatis配置文件
背景:有时候需要测试xml中的sql写的对不对,重启整个系统比较慢。一般的方式是: (1)创建mybatis-config.xml,里面配置datasource,然后配置要测试的sql所在xml(2)然后再通过mybatis自带的方式获取它的SqlSessionFactory 和sqlSessionimport org.apache.ibatis.datasource.pooled.PooledDataSource;import org.apache.ibatis.io.Reso...原创 2021-09-26 18:29:05 · 1053 阅读 · 0 评论 -
oracle、postgresql两行数据合并成一行
postgresql(pg)两行数据合并成一行select string_agg (cust_attr_type_id,',' order by cust_attr_type_id) from attr_type icat where req_id ='123';oracleselect wm_concat(col2) from t_table where col2 in(660001641,660001642);...原创 2021-09-09 02:59:01 · 935 阅读 · 0 评论 -
oracle 查树
create table t_catalog_item(catalog_item_id number(10),parent_item_id number(10),catalog_item_name varchar2(32));结构如下:-1 -2 3 4 -5 6查询节点5及其子节点SQL:select t.*,rowid from t_catalog_item tstart with catalog_item_id=5 connec..原创 2021-09-04 18:38:12 · 185 阅读 · 0 评论 -
Oracle执行计划分析及实际生产案例解析
一、查看执行计划在SQL语句上,按F5,查看Oracle语句执行计划或者:F8执行语句explain plan for select COUNT(*) from taba A,tabb B where a.CITY =591and B.CITY=591;select * from table(dbms_xplan.display());执行计划的常用列字段解释:ID:个序号,但不是执行的先后顺序。执行的先后根据缩进来判断。Operation: 当前操作的内容。基数...原创 2021-04-12 23:40:20 · 3988 阅读 · 0 评论 -
数据库查询优化过程(索引、分区、分表、分库)
一个大表,大概控制在25个字段左右差不多。账本表:1.按地市分区 9个分区2. 复合索引(账户ID,账本类型) 唯一索引(地市,账本ID)--------------------------查询优化过程1.索引。数据量增多的时候,查询速度开始变慢,这个时候一般会考虑到用索引复合索引(A,B)相当于:索引(A)索引(A,B)最左边的优先约束,因此最左边的定义约束数据量多的字段。2.分区。加了索引,查询速度提升了一点,但是由于数据量还是大,查询还是不够快,考虑...原创 2021-04-10 01:05:46 · 2135 阅读 · 0 评论 -
ResultSet滚动模式设置fetchSize无效
资料一:何意? 经过测试发现,假如库中有1w条数据,设置fetchSize=100,返回的结果仍然是1w,起不到分页的作用呀???使用ResultSet游标处理记录替代数据库层分页处理的方式,将游标的打开方式设置为FORWARD_READONLY模式, 使用ResultSet游标处理实际执行时间比数据库层分页处理方式快2倍。代码如下(例):String sql=“select * from xxx”;PreparedStatement pstmt=conn.prepareStatement.原创 2021-03-24 11:33:22 · 1888 阅读 · 0 评论 -
二阶段、XA、三阶段、TCC分别是什么?它们之间的关系及区别
什么是XA?XA是X/Open DTP组织(X/Open DTP group)定义的两阶段提交协议,XA被许多数据库(如Oracle、DB2、SQL Server、MySQL)和中间件等工具(如CICS 和 Tuxedo).本地支持 。XA就是X/Open DTP定义的交易中间件与数据库之间的接口规范(即接口函数),交易中间件用它来通知数据库事务的开始、结束以及提交、回滚等。XA接口函数由数据库厂商提供。通常情况下,交易中间件与数据库通过XA 接口规范,使用两阶段提交来完成一个全局事务,XA规范的基础是原创 2021-03-03 12:37:40 · 9794 阅读 · 1 评论 -
数据库分库分表的依据及产生的问题
分库分表的必要性关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到 1000W 或 100G 以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。库内分表只解决了单一表数据量过大的问题,但没有将表分布到不同机器的库上,因此对于减轻 MySQL 数据库的压力来说,帮助不是很大,大家还是竞争同一个物理机的 CPU、内存、网络 IO,最好通过分库分表来解决。分原创 2021-03-02 14:58:35 · 732 阅读 · 0 评论 -
Java和Oracle的差异点
oracle java 保留两位小数 select trunc(1.23856789,2) from dual round(m,n) 可以四舍五入 trunc(m,n) 直接丢弃,不四舍五入 String.format("%.2f",41.6667) 可以四舍五入 日期格式 不区分大小写 12小时yyyymmddhhmi...原创 2020-03-21 11:01:31 · 276 阅读 · 0 评论 -
ORACLE进阶(三)存储过程|游标|触发器|SQL语句块精讲
ORACLE进阶(三)存储过程|游标|触发器|SQL语句块精讲 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。迷之疑问——存储过程到底是干嘛用的?存储过程到底是干嘛用的...原创 2019-04-17 00:16:29 · 578 阅读 · 0 评论 -
oracle进阶(五)执行计划
oracle进阶(五)执行计划主要内容:认识优化器,认识执行计划,以及如何优化执行计划。create table test1(a_id number(5),name varchar2(20));create index idx_test1 on test1(a_id);create table test2(b_id number(5),name varchar2(20)...原创 2019-04-26 11:30:07 · 272 阅读 · 0 评论 -
ORACLE进阶(四)知识库——创建属于自己的“新华字典”
ORACLE进阶(四)知识库——创建属于自己的“新华字典”一、数据库定义语言DDL(Data Definition Language)(一)表操作--删表drop table test; --建表create table test(id number(10) primary key,/*primary key 表示主键*/month number(10),status...原创 2019-04-17 22:00:25 · 446 阅读 · 0 评论 -
ORACLE进阶(一)定时任务dbms_job
ORACLE进阶(一)定时任务dbms_job用plsql窗口下的dbms_job也可以新建job,但是我不推荐,一开始我也用工具创建,但因为很多时候,我没有plsql工具,只有sqlplus。新建job定时执行:declare job number;BEGIN DBMS_JOB.SUBMIT( JOB => job, /*自动生成JOB_ID*...原创 2019-04-15 20:58:27 · 814 阅读 · 0 评论 -
oracle进阶(六)根据一个表字段更新另一个表字段
oracle进阶(六)根据一个表字段更新另一个表字段1.普通情况update ceshi a set a.fixed_time=(select submit_date from kaifa b where a.service_name=b.task_name )where exists(select 1 from kaifa b where a.service_name=b.ta...原创 2019-05-22 15:34:53 · 2580 阅读 · 0 评论 -
ORACLE进阶(二)查询速度优化——时间字段
ORACLE进阶(二)查询速度优化——时间字段(1)to_charselect t.*,rowid from test where to_char(modify_time,'yyyymmdd')=20190415(2)to_dateselect t.*, rowid from test t where modify_time >= to_date('20190...原创 2019-04-15 23:16:29 · 4824 阅读 · 0 评论
分享