Welcome 微信登录

首页 / 数据库 / MySQL

Oracle多表查询优化

Oracle多表查询优化

Oracle有个高速缓冲的概念,这个高速缓冲就是存放执行过的SQL语句,那oracle在执行sql语句的时候要做很多工作,例如解析sql语句,估算索引利用率,绑定变量,读取数据块等等这些操作。假设高速缓冲里已经存储了执行过的sql语句,那就直接匹配执行了,少了步骤,自然就快了,但是经过测试会发现高速缓冲只对简单的表起作用,多表的情况完全没有效果,例如在查询单表的时候那叫一个快,但是假设连接多个表,就龟速了。最重要一点,ORACLE的高速缓冲是全字符匹配的,...
MySQL不能写入数据之关键字冲突

MySQL不能写入数据之关键字冲突

问题描述:今天使用MySQL新建了一个表。在插入数据时,报了语法错误。由于使用的是 mabits 代码自动生成工具,并且自己没有改写其中的sql语句。所以确信,sql语句部分应该没有可能写错。因此马上意识到可能表里面的字段出了问题。于是查看表里面的字段,发现有一个desc 字段和MySQL中降序的关键字冲突了。然后顺手把这个字段改写成了describe。到这里,以为问题就应该解决了。谁料想,又冲突了。describe也是MySQL的关键字。于是上网搜了一下...
Oracle在线重定义

Oracle在线重定义

在线重定义[@more@]Oracle9i之前,表数据的整理是通过 alter table XXX move [tablespace XX]进行的。如果表非常大,IO又不快的时候,move的过程可能相当漫长,不能算是HA特性。因此在HA的在线维护中,基本不会利用move来重组大型表,而且move后的表需要重建索引。而在9i引入的dbms_redefinition。该过程的内部原理其实就是采用了MV的机制,类似在原表建立一个prebuilt的MV然后一直增量...
DataGuard添加临时数据文件的bug

DataGuard添加临时数据文件的bug

有一个环境是Oracle 10gR2,一主两备,因为10g的备库还不是active,所以有一些查询的需求的时候,我们还是会打开相应的窗口时间。开发的同学需要做一个大查询,数据只能全表,而且还有order by,势必会消耗大量的temp空间,这个时候充分利用备库就是好一些,有一个备库平时也没有用过,今天就用这个备库来完成查询需求。但是过了一会,开发同事说,查询失败了。让我看看什么原因。开发同学提供的日志为:2015-11-20 10:48:05,---exc...
Oracle 12c PDB浅析

Oracle 12c PDB浅析

不管怎么样,Oracle 12c出来这么久,总是因为各种各样的原因没有开始学习,现在似乎还是有些晚了。总是耳闻PDB在12c是一种全新的架构模式,在各种技术聊天也大概知道是一种可插拨的新型架构模式,但是似乎SQLServer中也有类似的架构,不管怎么样Oracle圈内还是很火,而且听说12c r2可以支持4096个pdb,这个也太大了,docker装一下试试:)自己也在本地尝试了一下,其实中间了花了些时间,中途总是被各种事情打断,所以留下的都是一些零碎的知...
Oracle 11.2.0.1升级到11.2.0.3

Oracle 11.2.0.1升级到11.2.0.3

【说明】生产数据库一般情况下都是不建议使用Oracle 11.2.0.1等类似的点1或R1的版本,11.2.0.1是基础版本,这个版本相对上一个版本有较多的特性的更新,而特性的更新也意味着出现BUG的可能性会比其他版本高很多。【场景说明】最近发现了一个很少用的系统遇到了BUG,需要从11.2.0.1升级到11.2.0.3的版本。【原理】数据库的升级其实更像是数据库的迁移,如从11.2.0.1升级到11.2.0.3是在该数据库的操作系统上面增加安装11.2....
Oracle中利用undo进行数据的恢复操作

Oracle中利用undo进行数据的恢复操作

【说明】无意中看到一个同事的QQ留言上面写着“真累“,还没有过30分钟就接到这个同事的电话,如下:刚在做删除数据的时候,发现由于条件没有写好,导致删错了,有没有办法恢复;接到这个任务 ,首先是深深的感慨了一下:人在状态不好的情况下尽量多休息少做事,特别是涉及到很重要的事情。跟着同事确定了出现问题的时间点后,先是安慰一下,让他从那惶恐不安的心里恢复过来,然后开始了找寻数据的工作。【环境说明】•数据库版本:11.2.0.3&b...
使用Cygwin中的AWK工具进行mysql binlog日志查看

使用Cygwin中的AWK工具进行mysql binlog日志查看

Linux工具确实强悍,然而作为没有Linux机器使用权以及开发没有使用Linux进行的人,有时想用一些命令确实不方便,所以,才去试着用用cygwin,一款在windows平台上运行的类UNIX模拟环境,是cygnus solutions公司开发的自由软件,对于一些命令的使用带来了许多方便。初次使用的需求是:由别人导出的binlog日志,100+Mb,使用windows的文本编辑器打开超级慢,几近快卡死,而且查看起来很困难,所以想把相关行选择出来,保存为另...
PostgreSQL 导出数据字典文档

PostgreSQL 导出数据字典文档

项目上需要整理目前数据库的数据字典文档。项目不规范,这种文档只要后期来补。这么多张表,每个字段都写到word文档里真心头大。就算前面写了个查询表结构的sql,但是最后整理到word里还是感觉有点麻烦。以前写过一个Oracle直接生成表结构的html文档,所以现在也想再弄个postgresql 版本的。查了一番文档,发现pg9.4不支持写文件。无奈放弃。最后选了一个这种方案,利用sql脚本中打印消息的功能。把生成的html文档打印出来,最后拷贝html文档代...
PostgreSQL 导出表结构信息

PostgreSQL 导出表结构信息

项目用了Postgresql 数据库,项目组要出表结构的文档,手写太麻烦,想用slq脚本导出一份。查了一番资料,似乎没有多好的方法。dump方式导出的脚本太乱,没法直接写在word文档里。只能自己写sql查询出表结构,然后利用pgadmin的导出查询结果的功能,能最快的获取一份整个数据库的表结构信息。虽然不能实现全自动的导出文档,但是对整理文档来说,还是节省了不少时间。--查询所有的表字段信息(带表名)select(select relname||"--"...
Oracle lag()与lead() 函数

Oracle lag()与lead() 函数

一、简介lag与lead函数是跟偏移量相关的两个分析函数,通过这两个函数可以在一次查询中取出同一字段的前N行的数据(lag)和后N行的数据(lead)作为独立的列,从而更方便地进行进行数据过滤。这种操作可以代替表的自联接,并且LAG和LEAD有更高的效率。over()表示 lag()与lead()操作的数据都在over()的范围内,他里面可以使用partition by 语句(用于分组) order by 语句(用于排序)。partition by a o...
<< 891 892 893 894 895 896 897 898 899 900 >>